Commit adcff6f206aae3e8d69d2ca603404a55c53fc6bd

Authored by wdn127929
1 parent 64c7c9a3

合并

1.81 KB | W: | H:

2.22 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
@@ -13,6 +13,7 @@ import 'package:fluwx/fluwx.dart'; @@ -13,6 +13,7 @@ import 'package:fluwx/fluwx.dart';
13 import 'package:one_key/pages/detail/handle_online_page.dart'; 13 import 'package:one_key/pages/detail/handle_online_page.dart';
14 import 'package:one_key/provider/base_info_provider.dart'; 14 import 'package:one_key/provider/base_info_provider.dart';
15 import 'package:one_key/provider/coupon_provider.dart'; 15 import 'package:one_key/provider/coupon_provider.dart';
  16 +import 'package:one_key/provider/create_store_model.dart';
16 import 'package:one_key/provider/message_dialog_model.dart'; 17 import 'package:one_key/provider/message_dialog_model.dart';
17 import 'package:intl/date_symbol_data_local.dart'; 18 import 'package:intl/date_symbol_data_local.dart';
18 import 'package:one_key/provider/notebook_detail_model.dart'; 19 import 'package:one_key/provider/notebook_detail_model.dart';
@@ -74,6 +75,9 @@ Future<void> main() async { @@ -74,6 +75,9 @@ Future<void> main() async {
74 ChangeNotifierProvider<BaseIndoProvider>( 75 ChangeNotifierProvider<BaseIndoProvider>(
75 create: (_) => BaseIndoProvider(), 76 create: (_) => BaseIndoProvider(),
76 ), 77 ),
  78 + ChangeNotifierProvider<CreateStoreModel>(
  79 + create: (_) => CreateStoreModel(),
  80 + ),
77 ], 81 ],
78 child: MyApp(), 82 child: MyApp(),
79 )); 83 ));
@@ -89,5 +89,6 @@ class HttpUrl { @@ -89,5 +89,6 @@ class HttpUrl {
89 "?service=App.Photo.getSellerPhotoById"; //查看商家图片 89 "?service=App.Photo.getSellerPhotoById"; //查看商家图片
90 static const String send_vc_code = 90 static const String send_vc_code =
91 "?service=App.SendSMS.SendVcCode"; //绑定手机号码时,给用户发送短信验证码接口 91 "?service=App.SendSMS.SendVcCode"; //绑定手机号码时,给用户发送短信验证码接口
92 - 92 + static const String check_seller_acc =
  93 + "?service=App.User.CheckSellerAcc"; //APP微信登录后检测是否存在商家
93 } 94 }
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter_screenutil/screenutil.dart'; 2 import 'package:flutter_screenutil/screenutil.dart';
  3 +import 'package:one_key/provider/create_store_model.dart';
3 import 'package:one_key/res/colors.dart'; 4 import 'package:one_key/res/colors.dart';
4 import 'package:one_key/utils/navigator_util.dart'; 5 import 'package:one_key/utils/navigator_util.dart';
5 import 'package:one_key/utils/utils.dart'; 6 import 'package:one_key/utils/utils.dart';
@@ -7,6 +8,7 @@ import 'package:one_key/widgets/round_button.dart'; @@ -7,6 +8,7 @@ import 'package:one_key/widgets/round_button.dart';
7 import 'package:one_key/widgets/system_app_bar.dart'; 8 import 'package:one_key/widgets/system_app_bar.dart';
8 import 'package:one_key/widgets/v_empty_view.dart'; 9 import 'package:one_key/widgets/v_empty_view.dart';
9 import 'package:permission_handler/permission_handler.dart'; 10 import 'package:permission_handler/permission_handler.dart';
  11 +import 'package:provider/provider.dart';
10 12
11 class EnterStoreAddressPage extends StatefulWidget { 13 class EnterStoreAddressPage extends StatefulWidget {
12 EnterStoreAddressPage({Key key}) : super(key: key); 14 EnterStoreAddressPage({Key key}) : super(key: key);
@@ -17,8 +19,23 @@ class EnterStoreAddressPage extends StatefulWidget { @@ -17,8 +19,23 @@ class EnterStoreAddressPage extends StatefulWidget {
17 19
18 class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> { 20 class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> {
19 String storeAddress = '请选择地图地址'; 21 String storeAddress = '请选择地图地址';
  22 + TextEditingController _controller = TextEditingController();
  23 +
  24 + @override
  25 + void initState() {
  26 + // TODO: implement initState
  27 + super.initState();
  28 + }
  29 +
20 @override 30 @override
21 Widget build(BuildContext context) { 31 Widget build(BuildContext context) {
  32 + CreateStoreModel createStoreModel =
  33 + Provider.of<CreateStoreModel>(context, listen: false);
  34 + _controller.text = createStoreModel.storeInfo.addressDetail;
  35 + if (createStoreModel.storeInfo.address != null) {
  36 + storeAddress = createStoreModel.storeInfo.address;
  37 + }
  38 +
22 return Scaffold( 39 return Scaffold(
23 backgroundColor: Colors.white, 40 backgroundColor: Colors.white,
24 appBar: SystemAppBar( 41 appBar: SystemAppBar(
@@ -55,9 +72,10 @@ class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> { @@ -55,9 +72,10 @@ class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> {
55 if (address != null) { 72 if (address != null) {
56 setState(() { 73 setState(() {
57 storeAddress = address['address']; 74 storeAddress = address['address'];
58 - // 'address':  
59 - // 'lat':  
60 - // 'lng 75 + createStoreModel.storeInfo.address =
  76 + storeAddress;
  77 + createStoreModel.storeInfo.lat = address['lat'];
  78 + createStoreModel.storeInfo.lng = address['lng'];
61 }); 79 });
62 } 80 }
63 }, PermissionGroup.location); 81 }, PermissionGroup.location);
@@ -86,6 +104,7 @@ class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> { @@ -86,6 +104,7 @@ class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> {
86 ), 104 ),
87 VEmptyView(20), 105 VEmptyView(20),
88 TextField( 106 TextField(
  107 + controller: _controller,
89 // textAlignVertical: TextAlignVertical.bottom, 108 // textAlignVertical: TextAlignVertical.bottom,
90 maxLines: 1, 109 maxLines: 1,
91 // //光标颜色 110 // //光标颜色
@@ -116,7 +135,9 @@ class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> { @@ -116,7 +135,9 @@ class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> {
116 color: MyColours.color_bff6f7, 135 color: MyColours.color_bff6f7,
117 width: ScreenUtil().setWidth(2))), 136 width: ScreenUtil().setWidth(2))),
118 ), 137 ),
119 - onChanged: (value) {}, 138 + onChanged: (value) {
  139 + createStoreModel.storeInfo.addressDetail = value;
  140 + },
120 onEditingComplete: () { 141 onEditingComplete: () {
121 FocusScope.of(context) 142 FocusScope.of(context)
122 .requestFocus(FocusNode()); //点击空白处隐藏键盘 143 .requestFocus(FocusNode()); //点击空白处隐藏键盘
@@ -19,7 +19,9 @@ class EnterStoreEnvironmentPage extends StatefulWidget { @@ -19,7 +19,9 @@ class EnterStoreEnvironmentPage extends StatefulWidget {
19 _EnterStoreEnvironmentPageState(); 19 _EnterStoreEnvironmentPageState();
20 } 20 }
21 21
22 -class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> { 22 +class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> with AutomaticKeepAliveClientMixin {
  23 + @override
  24 + bool get wantKeepAlive => true;
23 ScrollController _controller = ScrollController(); 25 ScrollController _controller = ScrollController();
24 @override 26 @override
25 Widget build(BuildContext context) { 27 Widget build(BuildContext context) {
@@ -27,6 +29,7 @@ class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> { @@ -27,6 +29,7 @@ class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> {
27 backgroundColor: Colors.white, 29 backgroundColor: Colors.white,
28 appBar: SystemAppBar( 30 appBar: SystemAppBar(
29 '', 31 '',
  32 + leftTitle: '上一步',
30 onTap: () { 33 onTap: () {
31 Navigator.pop(context); 34 Navigator.pop(context);
32 }, 35 },
@@ -36,19 +39,22 @@ class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> { @@ -36,19 +39,22 @@ class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> {
36 FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘 39 FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
37 }, 40 },
38 child: Container( 41 child: Container(
39 - padding: EdgeInsets.symmetric(  
40 - horizontal: ScreenUtil().setWidth(70),  
41 - vertical: ScreenUtil().setWidth(60)), 42 + padding:
  43 + EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(60)),
42 child: SingleChildScrollView( 44 child: SingleChildScrollView(
43 controller: _controller, 45 controller: _controller,
44 child: Column( 46 child: Column(
45 crossAxisAlignment: CrossAxisAlignment.start, 47 crossAxisAlignment: CrossAxisAlignment.start,
46 children: [ 48 children: [
47 - Text('请上传店内环境照片或视频(选传)',  
48 - style: TextStyle(  
49 - color: MyColours.color_333333,  
50 - fontSize: ScreenUtil().setSp(40),  
51 - fontWeight: FontWeight.bold)), 49 + Padding(
  50 + padding: EdgeInsets.symmetric(
  51 + horizontal: ScreenUtil().setWidth(70)),
  52 + child: Text('请上传店内环境照片或视频(选传)',
  53 + style: TextStyle(
  54 + color: MyColours.color_333333,
  55 + fontSize: ScreenUtil().setSp(40),
  56 + fontWeight: FontWeight.bold)),
  57 + ),
52 VEmptyView(100), 58 VEmptyView(100),
53 Consumer<UploadImageProvider>( 59 Consumer<UploadImageProvider>(
54 builder: (context, model, _) { 60 builder: (context, model, _) {
@@ -58,18 +64,22 @@ class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> { @@ -58,18 +64,22 @@ class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> {
58 scrollController: _controller); 64 scrollController: _controller);
59 }), 65 }),
60 VEmptyView(160), 66 VEmptyView(160),
61 - RoundButton(  
62 - text: '下一步',  
63 - gradientStart: MyColours.color_199095,  
64 - gradientEnd: MyColours.color_199095,  
65 - // borderColor: MyColours.color_999999,  
66 - radius: ScreenUtil().setWidth(20),  
67 - fontSize: 28,  
68 - isBold: false,  
69 - onPressed: () {  
70 - NavigatorUtil.goEnterStoreAddressPage(context);  
71 - },  
72 - ) 67 + Padding(
  68 + padding: EdgeInsets.symmetric(
  69 + horizontal: ScreenUtil().setWidth(70)),
  70 + child: RoundButton(
  71 + text: '完成',
  72 + gradientStart: MyColours.color_199095,
  73 + gradientEnd: MyColours.color_199095,
  74 + // borderColor: MyColours.color_999999,
  75 + radius: ScreenUtil().setWidth(20),
  76 + fontSize: 28,
  77 + isBold: false,
  78 + onPressed: () {
  79 + // NavigatorUtil.goEnterStoreAddressPage(
  80 + // context);
  81 + },
  82 + ))
73 ]))))); 83 ])))));
74 ; 84 ;
75 } 85 }
@@ -26,6 +26,7 @@ class _EnterStoreFrontPhotoPageState extends State<EnterStoreFrontPhotoPage> { @@ -26,6 +26,7 @@ class _EnterStoreFrontPhotoPageState extends State<EnterStoreFrontPhotoPage> {
26 backgroundColor: Colors.white, 26 backgroundColor: Colors.white,
27 appBar: SystemAppBar( 27 appBar: SystemAppBar(
28 '', 28 '',
  29 + leftTitle: '上一步',
29 onTap: () { 30 onTap: () {
30 Navigator.pop(context); 31 Navigator.pop(context);
31 }, 32 },
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter_screenutil/screenutil.dart'; 2 import 'package:flutter_screenutil/screenutil.dart';
  3 +import 'package:one_key/provider/create_store_model.dart';
3 import 'package:one_key/res/colors.dart'; 4 import 'package:one_key/res/colors.dart';
4 import 'package:one_key/utils/navigator_util.dart'; 5 import 'package:one_key/utils/navigator_util.dart';
5 import 'package:one_key/widgets/round_button.dart'; 6 import 'package:one_key/widgets/round_button.dart';
6 import 'package:one_key/widgets/system_app_bar.dart'; 7 import 'package:one_key/widgets/system_app_bar.dart';
7 import 'package:one_key/widgets/v_empty_view.dart'; 8 import 'package:one_key/widgets/v_empty_view.dart';
  9 +import 'package:provider/provider.dart';
8 10
9 class EnterStoreNamePage extends StatefulWidget { 11 class EnterStoreNamePage extends StatefulWidget {
10 EnterStoreNamePage({Key key}) : super(key: key); 12 EnterStoreNamePage({Key key}) : super(key: key);
@@ -14,8 +16,19 @@ class EnterStoreNamePage extends StatefulWidget { @@ -14,8 +16,19 @@ class EnterStoreNamePage extends StatefulWidget {
14 } 16 }
15 17
16 class _EnterStoreNamePageState extends State<EnterStoreNamePage> { 18 class _EnterStoreNamePageState extends State<EnterStoreNamePage> {
  19 + TextEditingController _controller = TextEditingController();
  20 +
  21 + @override
  22 + void initState() {
  23 + // TODO: implement initState
  24 + super.initState();
  25 + }
  26 +
17 @override 27 @override
18 Widget build(BuildContext context) { 28 Widget build(BuildContext context) {
  29 + CreateStoreModel createStoreModel =
  30 + Provider.of<CreateStoreModel>(context, listen: false);
  31 + _controller.text = createStoreModel.storeInfo.name;
19 return Scaffold( 32 return Scaffold(
20 backgroundColor: Colors.white, 33 backgroundColor: Colors.white,
21 appBar: SystemAppBar( 34 appBar: SystemAppBar(
@@ -43,6 +56,7 @@ class _EnterStoreNamePageState extends State<EnterStoreNamePage> { @@ -43,6 +56,7 @@ class _EnterStoreNamePageState extends State<EnterStoreNamePage> {
43 fontWeight: FontWeight.bold)), 56 fontWeight: FontWeight.bold)),
44 VEmptyView(100), 57 VEmptyView(100),
45 TextField( 58 TextField(
  59 + controller: _controller,
46 // textAlignVertical: TextAlignVertical.bottom, 60 // textAlignVertical: TextAlignVertical.bottom,
47 maxLines: 1, 61 maxLines: 1,
48 // //光标颜色 62 // //光标颜色
@@ -73,7 +87,9 @@ class _EnterStoreNamePageState extends State<EnterStoreNamePage> { @@ -73,7 +87,9 @@ class _EnterStoreNamePageState extends State<EnterStoreNamePage> {
73 color: MyColours.color_bff6f7, 87 color: MyColours.color_bff6f7,
74 width: ScreenUtil().setWidth(2))), 88 width: ScreenUtil().setWidth(2))),
75 ), 89 ),
76 - onChanged: (value) {}, 90 + onChanged: (value) {
  91 + createStoreModel.storeInfo.name = value;
  92 + },
77 onEditingComplete: () { 93 onEditingComplete: () {
78 FocusScope.of(context) 94 FocusScope.of(context)
79 .requestFocus(FocusNode()); //点击空白处隐藏键盘 95 .requestFocus(FocusNode()); //点击空白处隐藏键盘
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter_screenutil/screenutil.dart'; 2 import 'package:flutter_screenutil/screenutil.dart';
  3 +import 'package:one_key/provider/create_store_model.dart';
  4 +import 'package:one_key/provider/other_login_provider.dart';
  5 +import 'package:one_key/provider/user_model.dart';
3 import 'package:one_key/res/colors.dart'; 6 import 'package:one_key/res/colors.dart';
  7 +import 'package:one_key/route/route_handles.dart';
4 import 'package:one_key/utils/navigator_util.dart'; 8 import 'package:one_key/utils/navigator_util.dart';
5 import 'package:one_key/widgets/round_button.dart'; 9 import 'package:one_key/widgets/round_button.dart';
6 import 'package:one_key/widgets/system_app_bar.dart'; 10 import 'package:one_key/widgets/system_app_bar.dart';
7 import 'package:one_key/widgets/v_empty_view.dart'; 11 import 'package:one_key/widgets/v_empty_view.dart';
  12 +import 'package:provider/provider.dart';
8 13
9 class EnterStorePhonePage extends StatefulWidget { 14 class EnterStorePhonePage extends StatefulWidget {
10 EnterStorePhonePage({Key key}) : super(key: key); 15 EnterStorePhonePage({Key key}) : super(key: key);
@@ -14,12 +19,21 @@ class EnterStorePhonePage extends StatefulWidget { @@ -14,12 +19,21 @@ class EnterStorePhonePage extends StatefulWidget {
14 } 19 }
15 20
16 class _EnterStorePhonePageState extends State<EnterStorePhonePage> { 21 class _EnterStorePhonePageState extends State<EnterStorePhonePage> {
  22 + TextEditingController _controller = TextEditingController();
  23 +
  24 + @override
  25 + void initState() {
  26 + // TODO: implement initState
  27 + super.initState();
  28 + }
  29 +
17 @override 30 @override
18 Widget build(BuildContext context) { 31 Widget build(BuildContext context) {
19 return Scaffold( 32 return Scaffold(
20 backgroundColor: Colors.white, 33 backgroundColor: Colors.white,
21 appBar: SystemAppBar( 34 appBar: SystemAppBar(
22 '', 35 '',
  36 + leftTitle: '上一步',
23 onTap: () { 37 onTap: () {
24 Navigator.pop(context); 38 Navigator.pop(context);
25 }, 39 },
@@ -42,44 +56,50 @@ class _EnterStorePhonePageState extends State<EnterStorePhonePage> { @@ -42,44 +56,50 @@ class _EnterStorePhonePageState extends State<EnterStorePhonePage> {
42 fontSize: ScreenUtil().setSp(40), 56 fontSize: ScreenUtil().setSp(40),
43 fontWeight: FontWeight.bold)), 57 fontWeight: FontWeight.bold)),
44 VEmptyView(100), 58 VEmptyView(100),
45 - TextField(  
46 - // textAlignVertical: TextAlignVertical.bottom,  
47 - maxLines: 1,  
48 - // //光标颜色  
49 - // cursorColor:  
50 - // widget.isSelect ? Colors.white : MyColours.color_199095,  
51 - //输入文本的样式  
52 - style: TextStyle(  
53 - color: MyColours.color_333333,  
54 - fontSize: ScreenUtil().setSp(28),  
55 - ),  
56 - // focusNode: _codeNode,  
57 - decoration: InputDecoration(  
58 - contentPadding: EdgeInsets.symmetric(  
59 - vertical: ScreenUtil().setWidth(32),  
60 - horizontal: ScreenUtil().setWidth(40)),  
61 - border: OutlineInputBorder(),  
62 - hintText: '请输入接单电话',  
63 - hintStyle: TextStyle(  
64 - color: MyColours.color_999999, 59 + Consumer<CreateStoreModel>(builder: (context, model, _) {
  60 + _controller.text = model.storeInfo.phone;
  61 + return TextField(
  62 + // textAlignVertical: TextAlignVertical.bottom,
  63 + maxLines: 1,
  64 + controller: _controller,
  65 + // //光标颜色
  66 + // cursorColor:
  67 + // widget.isSelect ? Colors.white : MyColours.color_199095,
  68 + //输入文本的样式
  69 + style: TextStyle(
  70 + color: MyColours.color_333333,
65 fontSize: ScreenUtil().setSp(28), 71 fontSize: ScreenUtil().setSp(28),
66 ), 72 ),
67 - enabledBorder: OutlineInputBorder(  
68 - borderSide: BorderSide(  
69 - color: MyColours.color_bff6f7,  
70 - width: ScreenUtil().setWidth(2))),  
71 - focusedBorder: OutlineInputBorder(  
72 - borderSide: BorderSide(  
73 - color: MyColours.color_bff6f7,  
74 - width: ScreenUtil().setWidth(2))),  
75 - ),  
76 - onChanged: (value) {},  
77 - onEditingComplete: () {  
78 - FocusScope.of(context)  
79 - .requestFocus(FocusNode()); //点击空白处隐藏键盘  
80 - },  
81 - keyboardType: TextInputType.text,  
82 - ), 73 + // focusNode: _codeNode,
  74 + decoration: InputDecoration(
  75 + contentPadding: EdgeInsets.symmetric(
  76 + vertical: ScreenUtil().setWidth(32),
  77 + horizontal: ScreenUtil().setWidth(40)),
  78 + border: OutlineInputBorder(),
  79 + hintText: '请输入接单电话',
  80 + hintStyle: TextStyle(
  81 + color: MyColours.color_999999,
  82 + fontSize: ScreenUtil().setSp(28),
  83 + ),
  84 + enabledBorder: OutlineInputBorder(
  85 + borderSide: BorderSide(
  86 + color: MyColours.color_bff6f7,
  87 + width: ScreenUtil().setWidth(2))),
  88 + focusedBorder: OutlineInputBorder(
  89 + borderSide: BorderSide(
  90 + color: MyColours.color_bff6f7,
  91 + width: ScreenUtil().setWidth(2))),
  92 + ),
  93 + onChanged: (value) {
  94 + model.storeInfo.phone = value;
  95 + },
  96 + onEditingComplete: () {
  97 + FocusScope.of(context)
  98 + .requestFocus(FocusNode()); //点击空白处隐藏键盘
  99 + },
  100 + keyboardType: TextInputType.text,
  101 + );
  102 + }),
83 VEmptyView(160), 103 VEmptyView(160),
84 RoundButton( 104 RoundButton(
85 text: '下一步', 105 text: '下一步',
@@ -94,6 +114,5 @@ class _EnterStorePhonePageState extends State<EnterStorePhonePage> { @@ -94,6 +114,5 @@ class _EnterStorePhonePageState extends State<EnterStorePhonePage> {
94 }, 114 },
95 ) 115 )
96 ]))))); 116 ])))));
97 - ;  
98 } 117 }
99 } 118 }
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter_screenutil/screenutil.dart'; 2 import 'package:flutter_screenutil/screenutil.dart';
  3 +import 'package:one_key/provider/create_store_model.dart';
3 import 'package:one_key/res/colors.dart'; 4 import 'package:one_key/res/colors.dart';
4 import 'package:one_key/utils/navigator_util.dart'; 5 import 'package:one_key/utils/navigator_util.dart';
5 import 'package:one_key/widgets/round_button.dart'; 6 import 'package:one_key/widgets/round_button.dart';
6 import 'package:one_key/widgets/system_app_bar.dart'; 7 import 'package:one_key/widgets/system_app_bar.dart';
7 import 'package:one_key/widgets/v_empty_view.dart'; 8 import 'package:one_key/widgets/v_empty_view.dart';
  9 +import 'package:provider/provider.dart';
8 10
9 class EnterStorePositionPage extends StatefulWidget { 11 class EnterStorePositionPage extends StatefulWidget {
10 EnterStorePositionPage({Key key}) : super(key: key); 12 EnterStorePositionPage({Key key}) : super(key: key);
@@ -14,12 +16,24 @@ class EnterStorePositionPage extends StatefulWidget { @@ -14,12 +16,24 @@ class EnterStorePositionPage extends StatefulWidget {
14 } 16 }
15 17
16 class _EnterStorePositionPageState extends State<EnterStorePositionPage> { 18 class _EnterStorePositionPageState extends State<EnterStorePositionPage> {
  19 + TextEditingController _controller = TextEditingController();
  20 +
  21 + @override
  22 + void initState() {
  23 + // TODO: implement initState
  24 + super.initState();
  25 + }
  26 +
17 @override 27 @override
18 Widget build(BuildContext context) { 28 Widget build(BuildContext context) {
  29 + CreateStoreModel createStoreModel =
  30 + Provider.of<CreateStoreModel>(context, listen: false);
  31 + _controller.text = createStoreModel.storeInfo.position;
19 return Scaffold( 32 return Scaffold(
20 backgroundColor: Colors.white, 33 backgroundColor: Colors.white,
21 appBar: SystemAppBar( 34 appBar: SystemAppBar(
22 '', 35 '',
  36 + leftTitle: '上一步',
23 onTap: () { 37 onTap: () {
24 Navigator.pop(context); 38 Navigator.pop(context);
25 }, 39 },
@@ -43,6 +57,7 @@ class _EnterStorePositionPageState extends State<EnterStorePositionPage> { @@ -43,6 +57,7 @@ class _EnterStorePositionPageState extends State<EnterStorePositionPage> {
43 fontWeight: FontWeight.bold)), 57 fontWeight: FontWeight.bold)),
44 VEmptyView(100), 58 VEmptyView(100),
45 TextField( 59 TextField(
  60 + controller: _controller,
46 // textAlignVertical: TextAlignVertical.bottom, 61 // textAlignVertical: TextAlignVertical.bottom,
47 maxLines: 1, 62 maxLines: 1,
48 // //光标颜色 63 // //光标颜色
@@ -73,7 +88,9 @@ class _EnterStorePositionPageState extends State<EnterStorePositionPage> { @@ -73,7 +88,9 @@ class _EnterStorePositionPageState extends State<EnterStorePositionPage> {
73 color: MyColours.color_bff6f7, 88 color: MyColours.color_bff6f7,
74 width: ScreenUtil().setWidth(2))), 89 width: ScreenUtil().setWidth(2))),
75 ), 90 ),
76 - onChanged: (value) {}, 91 + onChanged: (value) {
  92 + createStoreModel.storeInfo.position = value;
  93 + },
77 onEditingComplete: () { 94 onEditingComplete: () {
78 FocusScope.of(context) 95 FocusScope.of(context)
79 .requestFocus(FocusNode()); //点击空白处隐藏键盘 96 .requestFocus(FocusNode()); //点击空白处隐藏键盘
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter_screenutil/screenutil.dart'; 2 import 'package:flutter_screenutil/screenutil.dart';
  3 +import 'package:one_key/provider/create_store_model.dart';
3 import 'package:one_key/res/colors.dart'; 4 import 'package:one_key/res/colors.dart';
4 import 'package:one_key/utils/navigator_util.dart'; 5 import 'package:one_key/utils/navigator_util.dart';
5 import 'package:one_key/widgets/round_button.dart'; 6 import 'package:one_key/widgets/round_button.dart';
6 import 'package:one_key/widgets/system_app_bar.dart'; 7 import 'package:one_key/widgets/system_app_bar.dart';
7 import 'package:one_key/widgets/v_empty_view.dart'; 8 import 'package:one_key/widgets/v_empty_view.dart';
  9 +import 'package:provider/provider.dart';
8 10
9 class EnterStoreTimePage extends StatefulWidget { 11 class EnterStoreTimePage extends StatefulWidget {
10 EnterStoreTimePage({Key key}) : super(key: key); 12 EnterStoreTimePage({Key key}) : super(key: key);
@@ -14,12 +16,24 @@ class EnterStoreTimePage extends StatefulWidget { @@ -14,12 +16,24 @@ class EnterStoreTimePage extends StatefulWidget {
14 } 16 }
15 17
16 class _EnterStoreTimePageState extends State<EnterStoreTimePage> { 18 class _EnterStoreTimePageState extends State<EnterStoreTimePage> {
  19 + TextEditingController _controller = TextEditingController();
  20 +
  21 + @override
  22 + void initState() {
  23 + // TODO: implement initState
  24 + super.initState();
  25 + }
  26 +
17 @override 27 @override
18 Widget build(BuildContext context) { 28 Widget build(BuildContext context) {
  29 + CreateStoreModel createStoreModel =
  30 + Provider.of<CreateStoreModel>(context, listen: false);
  31 + _controller.text = createStoreModel.storeInfo.time;
19 return Scaffold( 32 return Scaffold(
20 backgroundColor: Colors.white, 33 backgroundColor: Colors.white,
21 appBar: SystemAppBar( 34 appBar: SystemAppBar(
22 '', 35 '',
  36 + leftTitle: '上一步',
23 onTap: () { 37 onTap: () {
24 Navigator.pop(context); 38 Navigator.pop(context);
25 }, 39 },
@@ -44,6 +58,7 @@ class _EnterStoreTimePageState extends State<EnterStoreTimePage> { @@ -44,6 +58,7 @@ class _EnterStoreTimePageState extends State<EnterStoreTimePage> {
44 VEmptyView(100), 58 VEmptyView(100),
45 TextField( 59 TextField(
46 // textAlignVertical: TextAlignVertical.bottom, 60 // textAlignVertical: TextAlignVertical.bottom,
  61 + controller: _controller,
47 maxLines: 1, 62 maxLines: 1,
48 // //光标颜色 63 // //光标颜色
49 // cursorColor: 64 // cursorColor:
@@ -73,7 +88,9 @@ class _EnterStoreTimePageState extends State<EnterStoreTimePage> { @@ -73,7 +88,9 @@ class _EnterStoreTimePageState extends State<EnterStoreTimePage> {
73 color: MyColours.color_bff6f7, 88 color: MyColours.color_bff6f7,
74 width: ScreenUtil().setWidth(2))), 89 width: ScreenUtil().setWidth(2))),
75 ), 90 ),
76 - onChanged: (value) {}, 91 + onChanged: (value) {
  92 + createStoreModel.storeInfo.time = value;
  93 + },
77 onEditingComplete: () { 94 onEditingComplete: () {
78 FocusScope.of(context) 95 FocusScope.of(context)
79 .requestFocus(FocusNode()); //点击空白处隐藏键盘 96 .requestFocus(FocusNode()); //点击空白处隐藏键盘
@@ -2,6 +2,7 @@ import 'dart:io'; @@ -2,6 +2,7 @@ import 'dart:io';
2 import 'dart:async'; 2 import 'dart:async';
3 3
4 import 'package:flutter/material.dart'; 4 import 'package:flutter/material.dart';
  5 +import 'package:flutter/rendering.dart';
5 import 'package:flutter_ijkplayer/flutter_ijkplayer.dart'; 6 import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
6 import 'package:flutter_screenutil/flutter_screenutil.dart'; 7 import 'package:flutter_screenutil/flutter_screenutil.dart';
7 import 'package:one_key/models/upload_img_model.dart'; 8 import 'package:one_key/models/upload_img_model.dart';
@@ -72,6 +73,8 @@ class _VideoPickerWidgetState extends DisposableState<VideoPickerWidget> { @@ -72,6 +73,8 @@ class _VideoPickerWidgetState extends DisposableState<VideoPickerWidget> {
72 //////#相机拍照,单图选择 73 //////#相机拍照,单图选择
73 Future _getImageFromPictureOrCamera(ImageSource imageSource) async { 74 Future _getImageFromPictureOrCamera(ImageSource imageSource) async {
74 final pickedFile = await picker.getImage(source: imageSource); 75 final pickedFile = await picker.getImage(source: imageSource);
  76 + // String ddd = Utils.getPicSuffix(pickedFile.path);
  77 + // print(ddd);
75 setState(() { 78 setState(() {
76 if (pickedFile != null) { 79 if (pickedFile != null) {
77 UploadImgModel imgModel = UploadImgModel(); 80 UploadImgModel imgModel = UploadImgModel();
@@ -98,7 +101,8 @@ class _VideoPickerWidgetState extends DisposableState<VideoPickerWidget> { @@ -98,7 +101,8 @@ class _VideoPickerWidgetState extends DisposableState<VideoPickerWidget> {
98 Future _getVideoFromPictureOrCamera(ImageSource imageSource) async { 101 Future _getVideoFromPictureOrCamera(ImageSource imageSource) async {
99 final pickedFile = await picker.getVideo( 102 final pickedFile = await picker.getVideo(
100 source: imageSource, maxDuration: const Duration(seconds: 15)); 103 source: imageSource, maxDuration: const Duration(seconds: 15));
101 - 104 + String ddd = Utils.getPicSuffix(pickedFile.path);
  105 + print(ddd);
102 await VideoCompress.setLogLevel(0); 106 await VideoCompress.setLogLevel(0);
103 final info = await VideoCompress.getMediaInfo(pickedFile.path); 107 final info = await VideoCompress.getMediaInfo(pickedFile.path);
104 String duration = '00'; 108 String duration = '00';
@@ -352,240 +356,255 @@ class _VideoPickerWidgetState extends DisposableState<VideoPickerWidget> { @@ -352,240 +356,255 @@ class _VideoPickerWidgetState extends DisposableState<VideoPickerWidget> {
352 356
353 /// 九宫格 357 /// 九宫格
354 Widget _getGridImg(count, context, isLinjie) { 358 Widget _getGridImg(count, context, isLinjie) {
355 - return GridView.builder(  
356 - controller: widget.scrollController,  
357 - // padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),  
358 - shrinkWrap: true,  
359 - itemCount: count,  
360 - //SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget  
361 - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(  
362 - //横轴元素个数  
363 - crossAxisCount: 3,  
364 - //纵轴间距  
365 - mainAxisSpacing: ScreenUtil().setWidth(30),  
366 - //横轴间距  
367 - crossAxisSpacing: ScreenUtil().setWidth(30),  
368 - //子组件宽高长度比例  
369 - childAspectRatio: 1.0),  
370 - itemBuilder: (BuildContext context, int index) {  
371 - var linjie = widget.maxImageNumber;  
372 - if (isLinjie) {  
373 - linjie = widget.maxImageNumber - 2;  
374 - }  
375 - if (index == count - 2 && index < linjie) {  
376 - return InkWell(  
377 - onTap: () {  
378 - // 触摸收起键盘  
379 - FocusScope.of(context).requestFocus(FocusNode());  
380 - _openModalBottomSheet(context, FileType.image);  
381 - },  
382 - child: Container(  
383 - width: ScreenUtil().setWidth(90 * 2),  
384 - height: ScreenUtil().setWidth(90 * 2),  
385 - decoration: BoxDecoration(  
386 - border: Border.all(  
387 - color: MyColours.color_E0E0E0,  
388 - width: ScreenUtil().setWidth(2)),  
389 - ),  
390 - child: Column(  
391 - children: [  
392 - VEmptyView(74),  
393 - Image.asset(  
394 - Utils.getImgPath('add_image'),  
395 - width: ScreenUtil().setWidth(32),  
396 - height: ScreenUtil().setWidth(32), 359 + return Container(
  360 + height: ScreenUtil().setWidth(90 * 2),
  361 + child: ListView.builder(
  362 + controller: widget.scrollController,
  363 + // padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
  364 + shrinkWrap: true,
  365 + itemCount: count,
  366 + //列表高度
  367 + itemExtent: ScreenUtil().setWidth(100 * 2),
  368 + scrollDirection: Axis.horizontal,
  369 + padding:
  370 + EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(70)),
  371 + //SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
  372 + // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  373 + // //横轴元素个数
  374 + // crossAxisCount: 3,
  375 + // //纵轴间距
  376 + // mainAxisSpacing: ScreenUtil().setWidth(30),
  377 + // //横轴间距
  378 + // crossAxisSpacing: ScreenUtil().setWidth(30),
  379 + // //子组件宽高长度比例
  380 + // childAspectRatio: 1.0),
  381 + itemBuilder: (BuildContext context, int index) {
  382 + var linjie = widget.maxImageNumber;
  383 + if (isLinjie) {
  384 + linjie = widget.maxImageNumber - 2;
  385 + }
  386 + if (index == count - 2 && index < linjie) {
  387 + return InkWell(
  388 + onTap: () {
  389 + // 触摸收起键盘
  390 + FocusScope.of(context).requestFocus(FocusNode());
  391 + _openModalBottomSheet(context, FileType.image);
  392 + },
  393 + child: Container(
  394 + width: ScreenUtil().setWidth(110 * 2),
  395 + height: ScreenUtil().setWidth(90 * 2),
  396 + margin: EdgeInsets.only(right: ScreenUtil().setWidth(20)),
  397 + decoration: BoxDecoration(
  398 + border: Border.all(
  399 + color: MyColours.color_E0E0E0,
  400 + width: ScreenUtil().setWidth(2)),
397 ), 401 ),
398 - VEmptyView(10),  
399 - Text(  
400 - '添加图片',  
401 - style: TextStyle(  
402 - fontSize: ScreenUtil().setSp(24),  
403 - color: MyColours.color_999999),  
404 - )  
405 - ],  
406 - )),  
407 - );  
408 - }  
409 - if (index == count - 1 && index <= linjie) {  
410 - return InkWell(  
411 - onTap: () {  
412 - // 触摸收起键盘  
413 - FocusScope.of(context).requestFocus(FocusNode());  
414 - _openModalBottomSheet(context, FileType.video);  
415 - },  
416 - child: Container(  
417 - width: ScreenUtil().setWidth(90 * 2),  
418 - height: ScreenUtil().setWidth(90 * 2),  
419 - decoration: BoxDecoration(  
420 - border: Border.all(  
421 - color: MyColours.color_E0E0E0,  
422 - width: ScreenUtil().setWidth(2)),  
423 - ),  
424 - child: Column(  
425 - children: [  
426 - VEmptyView(74),  
427 - Image.asset(  
428 - Utils.getImgPath('add_image'),  
429 - width: ScreenUtil().setWidth(32),  
430 - height: ScreenUtil().setWidth(32), 402 + child: Column(
  403 + children: [
  404 + VEmptyView(46),
  405 + Image.asset(
  406 + Utils.getImgPath('add_image'),
  407 + width: ScreenUtil().setWidth(44),
  408 + height: ScreenUtil().setWidth(40),
  409 + ),
  410 + VEmptyView(10),
  411 + Text(
  412 + '上传照片',
  413 + style: TextStyle(
  414 + fontSize: ScreenUtil().setSp(24),
  415 + color: MyColours.color_999999),
  416 + )
  417 + ],
  418 + )),
  419 + );
  420 + }
  421 + if (index == count - 1 && index <= linjie) {
  422 + return InkWell(
  423 + onTap: () {
  424 + // 触摸收起键盘
  425 + FocusScope.of(context).requestFocus(FocusNode());
  426 + _openModalBottomSheet(context, FileType.video);
  427 + },
  428 + child: Container(
  429 + width: ScreenUtil().setWidth(110 * 2),
  430 + height: ScreenUtil().setWidth(90 * 2),
  431 + margin: EdgeInsets.only(right: ScreenUtil().setWidth(20)),
  432 + decoration: BoxDecoration(
  433 + border: Border.all(
  434 + color: MyColours.color_E0E0E0,
  435 + width: ScreenUtil().setWidth(2)),
431 ), 436 ),
432 - VEmptyView(10),  
433 - Text(  
434 - '添加视频',  
435 - style: TextStyle(  
436 - fontSize: ScreenUtil().setSp(24),  
437 - color: MyColours.color_999999),  
438 - )  
439 - ],  
440 - )),  
441 - );  
442 - } 437 + child: Column(
  438 + children: [
  439 + VEmptyView(46),
  440 + Image.asset(
  441 + Utils.getImgPath('add_video'),
  442 + width: ScreenUtil().setWidth(44),
  443 + height: ScreenUtil().setWidth(40),
  444 + ),
  445 + VEmptyView(10),
  446 + Text(
  447 + '上传视频',
  448 + style: TextStyle(
  449 + fontSize: ScreenUtil().setSp(24),
  450 + color: MyColours.color_999999),
  451 + )
  452 + ],
  453 + )),
  454 + );
  455 + }
443 456
444 - return widget.model.imageListDenvironment.length < 1  
445 - ? Text('')  
446 - : InkWell(  
447 - onTap: () {  
448 - if (widget.model.imageListDenvironment[index].process ==  
449 - 1) {  
450 - widget.model.imageQiniuUrlList = [];  
451 - if (widget.model.imageListDenvironment[index].qiniuUrl !=  
452 - null) {  
453 - if (widget  
454 - .model.imageListDenvironment[index].fileType ==  
455 - FileType.image) {  
456 - List<UploadImgModel> temp = [];  
457 - temp.addAll(widget.model.imageListDenvironment);  
458 - temp.removeWhere(  
459 - (element) => element.fileType == FileType.video);  
460 - for (int i = 0; i < temp.length; i++) {  
461 - widget.model.imageQiniuUrlList  
462 - .add(temp[i].qiniuUrl);  
463 - } 457 + return widget.model.imageListDenvironment.length < 1
  458 + ? Text('')
  459 + : InkWell(
  460 + onTap: () {
  461 + if (widget.model.imageListDenvironment[index].process ==
  462 + 1) {
  463 + widget.model.imageQiniuUrlList = [];
  464 + if (widget.model.imageListDenvironment[index]
  465 + .qiniuUrl !=
  466 + null) {
  467 + if (widget.model.imageListDenvironment[index]
  468 + .fileType ==
  469 + FileType.image) {
  470 + List<UploadImgModel> temp = [];
  471 + temp.addAll(widget.model.imageListDenvironment);
  472 + temp.removeWhere((element) =>
  473 + element.fileType == FileType.video);
  474 + for (int i = 0; i < temp.length; i++) {
  475 + widget.model.imageQiniuUrlList
  476 + .add(temp[i].qiniuUrl);
  477 + }
464 478
465 - ///没有上传完成的不可以点击  
466 - _showPhotoView(  
467 - context, index, widget.model.imageQiniuUrlList);  
468 - } else if (widget  
469 - .model.imageListDenvironment[index].fileType ==  
470 - FileType.video) {  
471 - NavigatorUtil.goPlayVideoPage(context,  
472 - urlStr: widget  
473 - .model.imageListDenvironment[index].qiniuUrl); 479 + ///没有上传完成的不可以点击
  480 + _showPhotoView(context, index,
  481 + widget.model.imageQiniuUrlList);
  482 + } else if (widget.model.imageListDenvironment[index]
  483 + .fileType ==
  484 + FileType.video) {
  485 + NavigatorUtil.goPlayVideoPage(context,
  486 + urlStr: widget.model
  487 + .imageListDenvironment[index].qiniuUrl);
  488 + }
  489 + }
474 } 490 }
475 - }  
476 - }  
477 - },  
478 - child: Stack(  
479 - children: [  
480 - Stack(  
481 - alignment: Alignment.topRight, 491 + },
  492 + child: Stack(
482 children: [ 493 children: [
483 - widget.model.imageListDenvironment[index].fileType ==  
484 - FileType.image  
485 - ? Image.file(  
486 - widget  
487 - .model.imageListDenvironment[index].file,  
488 - fit: BoxFit.cover,  
489 - width: ScreenUtil().setWidth(100 * 2),  
490 - height: ScreenUtil().setWidth(100 * 2),  
491 - )  
492 - : Image.file(  
493 - widget.model.imageListDenvironment[index]  
494 - .thumbnailPath,  
495 - fit: BoxFit.cover,  
496 - width: ScreenUtil().setWidth(100 * 2),  
497 - height: ScreenUtil().setWidth(100 * 2),  
498 - )  
499 - // : FutureBuilder(  
500 - // //显示缩略图  
501 - // future: _initializeVideoPlayerFuture,  
502 - // builder: (context, snapshot) {  
503 - // print(snapshot.connectionState);  
504 - // if (snapshot.hasError)  
505 - // print(snapshot.error);  
506 - // if (snapshot.connectionState ==  
507 - // ConnectionState.done) {  
508 - // return Container(  
509 - // // width: ScreenUtil().setWidth(225),  
510 - // child: AspectRatio(  
511 - // aspectRatio: 1 / 1, 494 + Stack(
  495 + alignment: Alignment.topRight,
  496 + children: [
  497 + widget.model.imageListDenvironment[index]
  498 + .fileType ==
  499 + FileType.image
  500 + ? Image.file(
  501 + widget.model.imageListDenvironment[index]
  502 + .file,
  503 + fit: BoxFit.cover,
  504 + width: ScreenUtil().setWidth(90 * 2),
  505 + height: ScreenUtil().setWidth(90 * 2),
  506 + )
  507 + : Image.file(
  508 + widget.model.imageListDenvironment[index]
  509 + .thumbnailPath,
  510 + fit: BoxFit.cover,
  511 + width: ScreenUtil().setWidth(90 * 2),
  512 + height: ScreenUtil().setWidth(90 * 2),
  513 + )
  514 + // : FutureBuilder(
  515 + // //显示缩略图
  516 + // future: _initializeVideoPlayerFuture,
  517 + // builder: (context, snapshot) {
  518 + // print(snapshot.connectionState);
  519 + // if (snapshot.hasError)
  520 + // print(snapshot.error);
  521 + // if (snapshot.connectionState ==
  522 + // ConnectionState.done) {
  523 + // return Container(
  524 + // // width: ScreenUtil().setWidth(225),
  525 + // child: AspectRatio(
  526 + // aspectRatio: 1 / 1,
512 527
513 - // // aspectRatio: _controller.value.aspectRatio,  
514 - // child: VideoPlayer(_controller),  
515 - // ),  
516 - // );  
517 - // } else {  
518 - // return Center(  
519 - // child: CircularProgressIndicator(),  
520 - // );  
521 - // }  
522 - // },  
523 - // ),  
524 - ,  
525 - Offstage(  
526 - offstage: widget.model.imageListDenvironment[index]  
527 - .process <  
528 - 1,  
529 - child: GestureDetector(  
530 - child: Image.asset(  
531 - Utils.getImgPath("delete"),  
532 - width: ScreenUtil().setWidth(40),  
533 - height: ScreenUtil().setWidth(40), 528 + // // aspectRatio: _controller.value.aspectRatio,
  529 + // child: VideoPlayer(_controller),
  530 + // ),
  531 + // );
  532 + // } else {
  533 + // return Center(
  534 + // child: CircularProgressIndicator(),
  535 + // );
  536 + // }
  537 + // },
  538 + // ),
  539 + ,
  540 + Offstage(
  541 + offstage: widget.model
  542 + .imageListDenvironment[index].process <
  543 + 1,
  544 + child: GestureDetector(
  545 + child: Image.asset(
  546 + Utils.getImgPath("delete"),
  547 + width: ScreenUtil().setWidth(40),
  548 + height: ScreenUtil().setWidth(40),
  549 + ),
  550 + onTap: () {
  551 + //点击删除按钮
  552 + setState(() {
  553 + widget.model.imageListDenvironment
  554 + .removeWhere((element) =>
  555 + element ==
  556 + widget.model
  557 + .imageListDenvironment[
  558 + index]);
  559 + widget.model.imageQiniuUrlList
  560 + .removeWhere((element) =>
  561 + element ==
  562 + widget.model
  563 + .imageQiniuUrlList[index]);
  564 + });
  565 + },
  566 + ),
534 ), 567 ),
535 - onTap: () {  
536 - //点击删除按钮  
537 - setState(() {  
538 - widget.model.imageListDenvironment  
539 - .removeWhere((element) =>  
540 - element ==  
541 - widget.model  
542 - .imageListDenvironment[index]);  
543 - widget.model.imageQiniuUrlList.removeWhere(  
544 - (element) =>  
545 - element ==  
546 - widget  
547 - .model.imageQiniuUrlList[index]);  
548 - });  
549 - },  
550 - ), 568 + ],
551 ), 569 ),
  570 + // Offstage(
  571 + // offstage: widget.model.imageListDenvironment[index].process == 1,
  572 + // child: Progress(widget.model.imageListDenvironment[index].process),
  573 + // ),
  574 + widget.model.imageListDenvironment[index].process == 1
  575 + ? widget.model.imageListDenvironment[index]
  576 + .fileType ==
  577 + FileType.video
  578 + ? Align(
  579 + alignment: Alignment.center,
  580 + child: Image.asset(
  581 + Utils.getImgPath('play'),
  582 + width: ScreenUtil().setWidth(60),
  583 + ))
  584 + : Container()
  585 + : Progress(
  586 + widget.model.imageListDenvironment[index]
  587 + .process,
  588 + size: 90.0,
  589 + ),
  590 + // widget.model.imageListDenvironment[index].fileType ==
  591 + // FileType.video
  592 + // ? Align(
  593 + // alignment: Alignment.bottomRight,
  594 + // child: Padding(
  595 + // padding: EdgeInsets.only(
  596 + // bottom: ScreenUtil().setWidth(10),
  597 + // right: ScreenUtil().setWidth(10)),
  598 + // child: Text(
  599 + // '00:${widget.model.imageListDenvironment[index].duration}',
  600 + // style: TextStyle(
  601 + // color: MyColours.color_333333,
  602 + // fontSize: ScreenUtil().setSp(24)),
  603 + // )),
  604 + // )
  605 + // : Container()
552 ], 606 ],
553 - ),  
554 - // Offstage(  
555 - // offstage: widget.model.imageListDenvironment[index].process == 1,  
556 - // child: Progress(widget.model.imageListDenvironment[index].process),  
557 - // ),  
558 - widget.model.imageListDenvironment[index].process == 1  
559 - ? widget.model.imageListDenvironment[index]  
560 - .fileType ==  
561 - FileType.video  
562 - ? Align(  
563 - alignment: Alignment.center,  
564 - child: Image.asset(  
565 - Utils.getImgPath('check_g'),  
566 - width: ScreenUtil().setWidth(40),  
567 - ))  
568 - : Container()  
569 - : Progress(widget  
570 - .model.imageListDenvironment[index].process),  
571 - widget.model.imageListDenvironment[index].fileType ==  
572 - FileType.video  
573 - ? Align(  
574 - alignment: Alignment.bottomRight,  
575 - child: Padding(  
576 - padding: EdgeInsets.only(  
577 - bottom: ScreenUtil().setWidth(10),  
578 - right: ScreenUtil().setWidth(10)),  
579 - child: Text(  
580 - '00:${widget.model.imageListDenvironment[index].duration}',  
581 - style: TextStyle(  
582 - color: MyColours.color_333333,  
583 - fontSize: ScreenUtil().setSp(24)),  
584 - )),  
585 - )  
586 - : Container()  
587 - ],  
588 - ));  
589 - }); 607 + ));
  608 + }));
590 } 609 }
591 } 610 }
@@ -4,7 +4,10 @@ import 'package:common_utils/common_utils.dart'; @@ -4,7 +4,10 @@ import 'package:common_utils/common_utils.dart';
4 import 'package:flutter/material.dart'; 4 import 'package:flutter/material.dart';
5 import 'package:flutter_screenutil/screenutil.dart'; 5 import 'package:flutter_screenutil/screenutil.dart';
6 import 'package:one_key/app.dart'; 6 import 'package:one_key/app.dart';
  7 +import 'package:one_key/models/store_info.dart';
  8 +import 'package:one_key/provider/create_store_model.dart';
7 import 'package:one_key/provider/other_login_provider.dart'; 9 import 'package:one_key/provider/other_login_provider.dart';
  10 +import 'package:one_key/provider/user_model.dart';
8 import 'package:one_key/res/colors.dart'; 11 import 'package:one_key/res/colors.dart';
9 import 'package:one_key/utils/navigator_util.dart'; 12 import 'package:one_key/utils/navigator_util.dart';
10 import 'package:one_key/utils/utils.dart'; 13 import 'package:one_key/utils/utils.dart';
@@ -268,39 +271,35 @@ class _BindingPhoneState extends State<BindingPhone> { @@ -268,39 +271,35 @@ class _BindingPhoneState extends State<BindingPhone> {
268 radius: ScreenUtil().setWidth(20), 271 radius: ScreenUtil().setWidth(20),
269 fontSize: 34, 272 fontSize: 34,
270 isBold: false, 273 isBold: false,
271 - onPressed: () {  
272 - NavigatorUtil.goIfNeedCreateStorePage(context);  
273 - if (phone == null || phone.trim().length == 0) {  
274 - Utils.showToast('请输入手机号码');  
275 - return;  
276 - }  
277 - if (code == null || code.trim().length == 0) {  
278 - Utils.showToast('请输入验证码');  
279 - return;  
280 - }  
281 - if (model.code != null && !codeEnabled) {  
282 - Utils.showToast('验证码已失效,请重新获取');  
283 - return;  
284 - }  
285 - if (model.code == null) {  
286 - Utils.showToast('请获取验证码');  
287 - return;  
288 - }  
289 - if (model.code != code) {  
290 - Utils.showToast('您输入的验证码不正确,请重新输入');  
291 - return;  
292 - }  
293 - // if (countdownTime < 1) { 274 + onPressed: () async {
  275 + // if (phone == null || phone.trim().length == 0) {
  276 + // Utils.showToast('请输入手机号码');
  277 + // return;
  278 + // }
  279 + // if (code == null || code.trim().length == 0) {
  280 + // Utils.showToast('请输入验证码');
  281 + // return;
  282 + // }
  283 + // if (model.code != null && !codeEnabled) {
294 // Utils.showToast('验证码已失效,请重新获取'); 284 // Utils.showToast('验证码已失效,请重新获取');
295 // return; 285 // return;
296 // } 286 // }
  287 + // if (model.code == null) {
  288 + // Utils.showToast('请获取验证码');
  289 + // return;
  290 + // }
  291 + // if (model.code != code) {
  292 + // Utils.showToast('您输入的验证码不正确,请重新输入');
  293 + // return;
  294 + // }
  295 + CreateStoreModel createStoreModel =
  296 + Provider.of<CreateStoreModel>(context,
  297 + listen: false);
297 298
298 - // 正确  
299 - //真正登录成功标志  
300 - App.sp.setBool("isLogin", true); 299 + createStoreModel.storeInfo = StoreInfo();
  300 + //新建店铺默认接单电话号码
  301 + createStoreModel.storeInfo.phone = phone;
301 NavigatorUtil.goIfNeedCreateStorePage(context); 302 NavigatorUtil.goIfNeedCreateStorePage(context);
302 - //错误  
303 - // Utils.showToast('您输入的验证码有误,请重新输入');  
304 }, 303 },
305 ) 304 )
306 305
  1 +import 'dart:convert';
  2 +
  3 +import 'package:cached_network_image/cached_network_image.dart';
  4 +import 'package:dotted_border/dotted_border.dart';
1 import 'package:flutter/material.dart'; 5 import 'package:flutter/material.dart';
  6 +import 'package:flutter_easyrefresh/easy_refresh.dart';
2 import 'package:flutter_screenutil/screenutil.dart'; 7 import 'package:flutter_screenutil/screenutil.dart';
  8 +import 'package:one_key/app.dart';
  9 +import 'package:one_key/constant/state.dart';
  10 +import 'package:one_key/models/check_seller_acc_model.dart';
  11 +import 'package:one_key/models/user.dart';
  12 +import 'package:one_key/pages/create_store/create_store.dart';
  13 +import 'package:one_key/pages/login/if_need_create_store_item.dart';
  14 +import 'package:one_key/provider/create_store_model.dart';
  15 +import 'package:one_key/provider/other_login_provider.dart';
  16 +import 'package:one_key/provider/user_model.dart';
3 import 'package:one_key/res/colors.dart'; 17 import 'package:one_key/res/colors.dart';
4 import 'package:one_key/utils/navigator_util.dart'; 18 import 'package:one_key/utils/navigator_util.dart';
5 import 'package:one_key/utils/utils.dart'; 19 import 'package:one_key/utils/utils.dart';
  20 +import 'package:one_key/widgets/page_exception.dart';
6 import 'package:one_key/widgets/round_button.dart'; 21 import 'package:one_key/widgets/round_button.dart';
7 import 'package:one_key/widgets/system_app_bar.dart'; 22 import 'package:one_key/widgets/system_app_bar.dart';
8 import 'package:one_key/widgets/v_empty_view.dart'; 23 import 'package:one_key/widgets/v_empty_view.dart';
  24 +import 'package:provider/provider.dart';
9 25
10 class IfNeedCreateStore extends StatefulWidget { 26 class IfNeedCreateStore extends StatefulWidget {
11 - IfNeedCreateStore({Key key}) : super(key: key); 27 + final List<CheckSellerAccSunModel> data;
  28 + IfNeedCreateStore({Key key, this.data}) : super(key: key);
12 29
13 @override 30 @override
14 _IfNeedCreateStoreState createState() => _IfNeedCreateStoreState(); 31 _IfNeedCreateStoreState createState() => _IfNeedCreateStoreState();
@@ -16,9 +33,58 @@ class IfNeedCreateStore extends StatefulWidget { @@ -16,9 +33,58 @@ class IfNeedCreateStore extends StatefulWidget {
16 33
17 class _IfNeedCreateStoreState extends State<IfNeedCreateStore> { 34 class _IfNeedCreateStoreState extends State<IfNeedCreateStore> {
18 ScrollController _controller = ScrollController(); 35 ScrollController _controller = ScrollController();
19 - bool noStore = false; 36 + OtherLoginProvider otherLoginProvider;
  37 +
  38 + @override
  39 + void initState() {
  40 + super.initState();
  41 + WidgetsBinding.instance.addPostFrameCallback((_) {
  42 + _checkSellerAcc();
  43 + });
  44 + }
  45 +
  46 + ///获取是否有店
  47 + _checkSellerAcc({showLoading = false}) async {
  48 + CreateStoreModel createStoreModel =
  49 + Provider.of<CreateStoreModel>(context, listen: false);
  50 + Map<String, String> params = {
  51 + "phone": createStoreModel.storeInfo.phone,
  52 + "unionid": App.sp.getString("unionid"),
  53 + };
  54 + await otherLoginProvider.checkSellerAcc(context, params,
  55 + showLoading: showLoading);
  56 + }
  57 +
  58 + ///进入某个店铺
  59 + _loginStore(context, CheckSellerAccSunModel sunModel) {
  60 + UserModel userModel = Provider.of<UserModel>(context, listen: false);
  61 + Map<String, dynamic> seller = sunModel.toJson();
  62 + Map<String, dynamic> userMap = {
  63 + "openid": seller['uid'],
  64 + "account": seller['account'],
  65 + "role_name": seller['role_name'],
  66 + "sellerid": seller['id'],
  67 + "sellercode": seller['seller_code'],
  68 + "sellername": seller['sellername'],
  69 + "sellerphone": seller['seller_tel'],
  70 + "sellerAddr": '',
  71 + "scatter": 0,
  72 + "room": 0,
  73 + "cassette": 0,
  74 + "morning": "",
  75 + "noon": "",
  76 + "night": "",
  77 + };
  78 + userModel.saveUserInfo(User.fromJson(userMap));
  79 + userModel.getSellerInfo(
  80 + context,
  81 + {"seller_id": seller['id'], "seller_openid": seller['openid']},
  82 + userMap);
  83 + }
  84 +
20 @override 85 @override
21 Widget build(BuildContext context) { 86 Widget build(BuildContext context) {
  87 + otherLoginProvider = Provider.of<OtherLoginProvider>(context, listen: true);
22 return Scaffold( 88 return Scaffold(
23 backgroundColor: Colors.white, 89 backgroundColor: Colors.white,
24 appBar: SystemAppBar( 90 appBar: SystemAppBar(
@@ -28,79 +94,266 @@ class _IfNeedCreateStoreState extends State<IfNeedCreateStore> { @@ -28,79 +94,266 @@ class _IfNeedCreateStoreState extends State<IfNeedCreateStore> {
28 Navigator.pop(context); 94 Navigator.pop(context);
29 }, 95 },
30 ), 96 ),
31 - body: Container(  
32 - width: double.infinity,  
33 - padding: EdgeInsets.all(ScreenUtil().setWidth(40)),  
34 - child: Column(crossAxisAlignment: CrossAxisAlignment.center,  
35 - // mainAxisAlignment: MainAxisAlignment.center,  
36 - children: [  
37 - VEmptyView(80),  
38 - Image.asset(  
39 - noStore  
40 - ? Utils.getImgPath('not_member')  
41 - : Utils.getImgPath('is_member'),  
42 - width: ScreenUtil().setWidth(120),  
43 - height: ScreenUtil().setWidth(120),  
44 - ),  
45 - VEmptyView(60),  
46 - Text(  
47 - noStore ? '您还没有绑定任何店铺' : '您已经是“xxxxx”的员工',  
48 - style: TextStyle(  
49 - fontSize: ScreenUtil().setSp(32),  
50 - color: MyColours.color_333333,  
51 - fontWeight: FontWeight.bold),  
52 - ),  
53 - VEmptyView(172),  
54 - InkWell(  
55 - onTap: () {  
56 - if (noStore) {  
57 - //跳转至新建店铺流程  
58 - NavigatorUtil.goEnterStoreNamePage(context);  
59 - } else {  
60 - //进入店铺  
61 -  
62 - }  
63 - },  
64 - child: Container(  
65 - width: double.infinity,  
66 - padding: EdgeInsets.symmetric(  
67 - horizontal: ScreenUtil().setWidth(40),  
68 - vertical: ScreenUtil().setWidth(18)),  
69 - decoration: BoxDecoration(  
70 - color: MyColours.color_24A4A8,  
71 - borderRadius: BorderRadius.circular(  
72 - ScreenUtil().setWidth(10))),  
73 - child: Text(  
74 - noStore ? '创建店铺' : '进入“xxxxxxx”',  
75 - textAlign: TextAlign.center,  
76 - maxLines: 1,  
77 - overflow: TextOverflow.ellipsis,  
78 - style: TextStyle(  
79 - color: MyColours.color_ffffff,  
80 - fontSize: ScreenUtil().setSp(34)),  
81 - ),  
82 - )),  
83 - noStore  
84 - ? Container()  
85 - : Container(  
86 - margin:  
87 - EdgeInsets.only(top: ScreenUtil().setWidth(40)),  
88 - padding: EdgeInsets.symmetric(  
89 - horizontal: ScreenUtil().setWidth(30),  
90 - ),  
91 - child: InkWell(  
92 - onTap: () {  
93 - //跳转至新建店铺流程  
94 - NavigatorUtil.goEnterStoreNamePage(context);  
95 - },  
96 - child: Text(  
97 - '不是我,我要重新建店',  
98 - textAlign: TextAlign.center, 97 + body: Padding(
  98 + padding:
  99 + EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(70)),
  100 + child: Consumer<OtherLoginProvider>(builder: (context, model, _) {
  101 + if (model.pageState != PageState.Success) {
  102 + if (model.pageState == PageState.Empty) {
  103 + return Container(
  104 + width: double.infinity,
  105 + padding: EdgeInsets.all(ScreenUtil().setWidth(40)),
  106 + child:
  107 + Column(crossAxisAlignment: CrossAxisAlignment.center,
  108 + // mainAxisAlignment: MainAxisAlignment.center,
  109 + children: [
  110 + VEmptyView(80),
  111 + Image.asset(
  112 + Utils.getImgPath('not_member'),
  113 + width: ScreenUtil().setWidth(120),
  114 + height: ScreenUtil().setWidth(120),
  115 + ),
  116 + VEmptyView(60),
  117 + Text(
  118 + '您还没有绑定任何店铺',
99 style: TextStyle( 119 style: TextStyle(
100 - color: MyColours.color_199095,  
101 - fontSize: ScreenUtil().setSp(30)), 120 + fontSize: ScreenUtil().setSp(32),
  121 + color: MyColours.color_333333,
  122 + fontWeight: FontWeight.bold),
102 ), 123 ),
103 - )),  
104 - ]))); 124 + VEmptyView(172),
  125 + InkWell(
  126 + onTap: () {
  127 + //跳转至新建店铺流程
  128 + NavigatorUtil.goEnterStoreNamePage(context);
  129 + },
  130 + child: Container(
  131 + width: double.infinity,
  132 + padding: EdgeInsets.symmetric(
  133 + horizontal: ScreenUtil().setWidth(40),
  134 + vertical: ScreenUtil().setWidth(18)),
  135 + decoration: BoxDecoration(
  136 + color: MyColours.color_24A4A8,
  137 + borderRadius: BorderRadius.circular(
  138 + ScreenUtil().setWidth(10))),
  139 + child: Text(
  140 + '创建店铺',
  141 + textAlign: TextAlign.center,
  142 + maxLines: 1,
  143 + overflow: TextOverflow.ellipsis,
  144 + style: TextStyle(
  145 + color: MyColours.color_ffffff,
  146 + fontSize: ScreenUtil().setSp(34)),
  147 + ),
  148 + )),
  149 + ]));
  150 + }
  151 + return ExceptionPage(
  152 + pageState: model.pageState,
  153 + callback: () {
  154 + _checkSellerAcc(showLoading: true);
  155 + },
  156 + emptyMsg: "",
  157 + emptyImg: "empty_search",
  158 + showMsg: "加载中,请稍后...",
  159 + );
  160 + } else {
  161 + return Column(
  162 + children: [
  163 + VEmptyView(40),
  164 + Text(
  165 + '请选择您要进入的店铺',
  166 + style: TextStyle(
  167 + fontSize: ScreenUtil().setWidth(32),
  168 + color: MyColours.color_333333,
  169 + fontWeight: FontWeight.bold),
  170 + ),
  171 + VEmptyView(100),
  172 + Expanded(
  173 + child: GridView.builder(
  174 + // controller: widget.scrollController,
  175 + // padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
  176 + shrinkWrap: true,
  177 + itemCount: model.sellerList.length + 1,
  178 + cacheExtent: ScreenUtil().setWidth(197 * 2),
  179 + //SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
  180 + gridDelegate:
  181 + SliverGridDelegateWithFixedCrossAxisCount(
  182 + //横轴元素个数
  183 + crossAxisCount: 2,
  184 + //纵轴间距
  185 + mainAxisSpacing: ScreenUtil().setWidth(50),
  186 + //横轴间距
  187 + crossAxisSpacing: ScreenUtil().setWidth(50),
  188 + //子组件宽高长度比例
  189 + childAspectRatio: 140 / 197),
  190 + itemBuilder: (BuildContext context, int index) {
  191 + if (index == model.sellerList.length) {
  192 + return InkWell(
  193 + onTap: () {
  194 + //跳转至新建店铺流程
  195 + NavigatorUtil.goEnterStoreNamePage(
  196 + context);
  197 + },
  198 + child: DottedBorder(
  199 + dashPattern: [5, 5, 5, 5],
  200 + borderType: BorderType.RRect,
  201 + radius: Radius.circular(
  202 + ScreenUtil().setWidth(10)),
  203 + // padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
  204 + color: MyColours.color_cccccc,
  205 + strokeWidth: ScreenUtil().setWidth(2),
  206 + child: ClipRRect(
  207 + borderRadius: BorderRadius.all(
  208 + Radius.circular(12)),
  209 + child: Container(
  210 + height:
  211 + ScreenUtil().setWidth(197 * 2),
  212 + width: ScreenUtil().setWidth(140 * 2),
  213 + child: Column(
  214 + mainAxisAlignment:
  215 + MainAxisAlignment.center,
  216 + children: [
  217 + Image.asset(
  218 + Utils.getImgPath('add_store'),
  219 + width: ScreenUtil()
  220 + .setWidth(32)),
  221 + VEmptyView(10),
  222 + Text(
  223 + '创建店铺',
  224 + style: TextStyle(
  225 + color:
  226 + MyColours.color_999999,
  227 + fontSize:
  228 + ScreenUtil().setSp(24)),
  229 + )
  230 + ],
  231 + ),
  232 + ),
  233 + ),
  234 + ));
  235 + }
  236 + return InkWell(
  237 + onTap: () {
  238 + _loginStore(context, model.sellerList[index]);
  239 + },
  240 + child: IfNeedCreateStoreItem(
  241 + model: model.sellerList[index]),
  242 + );
  243 + })),
  244 + // VEmptyView(40),
  245 + ],
  246 + );
  247 + }
  248 + })));
105 } 249 }
106 } 250 }
  251 +
  252 +// body:
  253 +// return Padding(
  254 +// padding: EdgeInsets.fromLTRB(ScreenUtil().setWidth(40), 0,
  255 +// ScreenUtil().setWidth(40), ScreenUtil().setWidth(40)),
  256 +// child: EasyRefresh.custom(
  257 +// // controller: _controller,
  258 +// slivers: [
  259 +// SliverList(
  260 +// delegate: SliverChildBuilderDelegate(
  261 +// (BuildContext context, int index) {
  262 +// return Container(
  263 +// child: Container(
  264 +// alignment: Alignment.centerLeft,
  265 +// height: ScreenUtil().setWidth(90),
  266 +// child: InkWell(
  267 +// onTap: () {
  268 +// //跳转至新建店铺流程
  269 +// NavigatorUtil.goEnterStoreNamePage(context);
  270 +// },
  271 +// child: Text(
  272 +// '不是我的店铺,我要重新建店',
  273 +// textAlign: TextAlign.center,
  274 +// style: TextStyle(
  275 +// color: MyColours.color_199095,
  276 +// fontSize: ScreenUtil().setSp(30)),
  277 +// ),
  278 +// )),
  279 +// );
  280 +// }, childCount: 1),
  281 +// ),
  282 +// SliverList(
  283 +// delegate: SliverChildBuilderDelegate(
  284 +// (BuildContext context, int index) {
  285 +// return DottedBorder(
  286 +// borderType: BorderType.RRect,
  287 +// radius: Radius.circular(ScreenUtil().setWidth(10)),
  288 +// // padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
  289 +// color: MyColours.color_cccccc,
  290 +// strokeWidth: ScreenUtil().setWidth(2),
  291 +// child: ClipRRect(
  292 +// borderRadius: BorderRadius.all(Radius.circular(12)),
  293 +// child: Container(
  294 +// height: ScreenUtil().setWidth(197 * 2),
  295 +// width: ScreenUtil().setWidth(140 * 2),
  296 +// color: Colors.amber,
  297 +// ),
  298 +// ),
  299 +// );
  300 +// }, childCount: 1),
  301 +// ),
  302 +// SliverList(
  303 +// delegate: SliverChildBuilderDelegate(
  304 +// (BuildContext context, int index) {
  305 +// return ListTile(
  306 +// onTap: () {
  307 +// UserModel userModel = Provider.of<UserModel>(
  308 +// context,
  309 +// listen: false);
  310 +// Map<String, dynamic> seller =
  311 +// model.sellerList[index].toJson();
  312 +// Map<String, dynamic> daily =
  313 +// jsonDecode(model.sellerList[index].daily);
  314 +// Map<String, dynamic> user = {};
  315 +// user['sellerAddr'] = seller['real_address'] ??
  316 +// seller['map_address'];
  317 +// // user['scatter'] = baseResp.data['scatter'];
  318 +// // user['room'] = baseResp.data['room'];
  319 +// // user['cassette'] = baseResp.data['cassette'];
  320 +// user['morning'] = daily['morning'];
  321 +// user['noon'] = daily['noon'];
  322 +// user['night'] = daily['night'];
  323 +// userModel.saveUserInfo(User.fromJson(user));
  324 +// App.sp.setBool("isLogin", true);
  325 +// App.sp.setString("is_call_tel",
  326 +// seller['is_call_tel'].toString());
  327 +// NavigatorUtil.goHomePage(context);
  328 +// },
  329 +// leading: Container(
  330 +// width: ScreenUtil().setWidth(70),
  331 +// height: ScreenUtil().setWidth(70),
  332 +// decoration: BoxDecoration(
  333 +// shape: BoxShape.circle,
  334 +// image: DecorationImage(
  335 +// image: NetworkImage(
  336 +// '${model.sellerList[index].sellerImage}'),
  337 +// fit: BoxFit.cover))),
  338 +// title: Text(
  339 +// '${model.sellerList[index].sellername}',
  340 +// style: TextStyle(
  341 +// color: MyColours.color_333333,
  342 +// fontSize: ScreenUtil().setSp(28),
  343 +// ),
  344 +// ));
  345 +// }, childCount: model.sellerList.length),
  346 +// )
  347 +// ],
  348 +// onRefresh: () async {
  349 +// // offset = 0;
  350 +// // getMessage(showLoading: false);
  351 +// },
  352 +// onLoad: () async {
  353 +// // offset++;
  354 +// // getMessage(showLoading: false);
  355 +// },
  356 +// ));
  357 +// }
  358 +// }));
  359 +// }}
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_screenutil/screenutil.dart';
  3 +import 'package:one_key/models/check_seller_acc_model.dart';
  4 +import 'package:one_key/res/colors.dart';
  5 +import 'package:one_key/widgets/v_empty_view.dart';
  6 +
  7 +class IfNeedCreateStoreItem extends StatefulWidget {
  8 + final CheckSellerAccSunModel model;
  9 + IfNeedCreateStoreItem({Key key, this.model}) : super(key: key);
  10 +
  11 + @override
  12 + _IfNeedCreateStoreItemState createState() => _IfNeedCreateStoreItemState();
  13 +}
  14 +
  15 +class _IfNeedCreateStoreItemState extends State<IfNeedCreateStoreItem> {
  16 + @override
  17 + Widget build(BuildContext context) {
  18 + return Stack(
  19 + children: [
  20 + Container(
  21 + decoration: BoxDecoration(
  22 + border: Border.all(
  23 + width: ScreenUtil().setWidth(2),
  24 + color: MyColours.color_D7F7F7),
  25 + borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
  26 + ),
  27 + Positioned(
  28 + top: 0,
  29 + left: 0,
  30 + child: ClipRRect(
  31 + //圆角图片
  32 + borderRadius: BorderRadius.only(
  33 + topRight: Radius.circular(ScreenUtil().setWidth(10)),
  34 + topLeft: Radius.circular(ScreenUtil().setWidth(10))),
  35 + child: Image.network(
  36 + widget.model.sellerImage,
  37 + fit: BoxFit.cover,
  38 + width: ScreenUtil().setWidth(140 * 2),
  39 + height: ScreenUtil().setWidth(140 * 2),
  40 + ),
  41 + )),
  42 + Positioned(
  43 + bottom: 0,
  44 + left: ScreenUtil().setWidth(20),
  45 + right: ScreenUtil().setWidth(20),
  46 + child: Padding(
  47 + child: Column(
  48 + children: [
  49 + Text('${widget.model.sellername}',
  50 + maxLines: 1,
  51 + overflow: TextOverflow.ellipsis,
  52 + style: TextStyle(
  53 + fontSize: ScreenUtil().setWidth(30),
  54 + color: MyColours.color_333333)),
  55 + VEmptyView(10),
  56 + Text('店长',
  57 + maxLines: 1,
  58 + overflow: TextOverflow.ellipsis,
  59 + style: TextStyle(
  60 + fontSize: ScreenUtil().setWidth(24),
  61 + color: MyColours.color_666666))
  62 + ],
  63 + ),
  64 + padding:
  65 + EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(14))))
  66 + ],
  67 + );
  68 + }
  69 +}
@@ -417,6 +417,7 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> { @@ -417,6 +417,7 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
417 // padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)), 417 // padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
418 shrinkWrap: true, 418 shrinkWrap: true,
419 itemCount: count, 419 itemCount: count,
  420 +
420 //SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget 421 //SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
421 gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( 422 gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
422 //横轴元素个数 423 //横轴元素个数
@@ -450,15 +451,15 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> { @@ -450,15 +451,15 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
450 ), 451 ),
451 child: Column( 452 child: Column(
452 children: [ 453 children: [
453 - VEmptyView(74), 454 + VEmptyView(46),
454 Image.asset( 455 Image.asset(
455 Utils.getImgPath('add_image'), 456 Utils.getImgPath('add_image'),
456 - width: ScreenUtil().setWidth(32),  
457 - height: ScreenUtil().setWidth(32), 457 + width: ScreenUtil().setWidth(44),
  458 + height: ScreenUtil().setWidth(40),
458 ), 459 ),
459 VEmptyView(10), 460 VEmptyView(10),
460 Text( 461 Text(
461 - '添加照片', 462 + '上传照片',
462 style: TextStyle( 463 style: TextStyle(
463 fontSize: ScreenUtil().setSp(24), 464 fontSize: ScreenUtil().setSp(24),
464 color: MyColours.color_999999), 465 color: MyColours.color_999999),
@@ -487,35 +488,40 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> { @@ -487,35 +488,40 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
487 child: Stack( 488 child: Stack(
488 children: [ 489 children: [
489 Stack( 490 Stack(
490 - alignment: Alignment.topRight, 491 + // alignment: Alignment.topRight,
491 children: [ 492 children: [
492 - Image.file(  
493 - temp[index].file,  
494 - fit: BoxFit.cover,  
495 - width: ScreenUtil().setWidth(100 * 2),  
496 - height: ScreenUtil().setWidth(100 * 2), 493 + Container(
  494 + color: Colors.red,
  495 + child: Image.file(
  496 + temp[index].file,
  497 + fit: BoxFit.cover,
  498 + width: ScreenUtil().setWidth(100 * 2),
  499 + height: ScreenUtil().setWidth(100 * 2),
  500 + ),
497 ), 501 ),
498 Offstage( 502 Offstage(
499 offstage: temp[index].process < 1, 503 offstage: temp[index].process < 1,
500 - child: GestureDetector(  
501 - child: Image.asset(  
502 - Utils.getImgPath("delete"),  
503 - width: ScreenUtil().setWidth(40),  
504 - height: ScreenUtil().setWidth(40),  
505 - ),  
506 - onTap: () {  
507 - //点击删除按钮  
508 - setState(() {  
509 - temp.removeWhere(  
510 - (element) => element == temp[index]);  
511 - widget.model.imageQiniuUrlList.removeWhere(  
512 - (element) =>  
513 - element ==  
514 - widget  
515 - .model.imageQiniuUrlList[index]);  
516 - });  
517 - },  
518 - ), 504 + child: Align(
  505 + alignment: Alignment.topRight,
  506 + child: GestureDetector(
  507 + child: Image.asset(
  508 + Utils.getImgPath("delete"),
  509 + width: ScreenUtil().setWidth(40),
  510 + height: ScreenUtil().setWidth(40),
  511 + ),
  512 + onTap: () {
  513 + //点击删除按钮
  514 + setState(() {
  515 + temp.removeWhere(
  516 + (element) => element == temp[index]);
  517 + widget.model.imageQiniuUrlList
  518 + .removeWhere((element) =>
  519 + element ==
  520 + widget.model
  521 + .imageQiniuUrlList[index]);
  522 + });
  523 + },
  524 + )),
519 ), 525 ),
520 ], 526 ],
521 ), 527 ),
@@ -4,14 +4,15 @@ import 'package:one_key/res/colors.dart'; @@ -4,14 +4,15 @@ import 'package:one_key/res/colors.dart';
4 4
5 class Progress extends StatelessWidget { 5 class Progress extends StatelessWidget {
6 final double value; 6 final double value;
7 - Progress(this.value); 7 + final double size;
  8 + Progress(this.value, {this.size = 100.0});
8 9
9 Widget get progress { 10 Widget get progress {
10 return Container( 11 return Container(
11 width: ScreenUtil().setWidth(30), 12 width: ScreenUtil().setWidth(30),
12 height: ScreenUtil().setWidth(30), 13 height: ScreenUtil().setWidth(30),
13 padding: EdgeInsets.all(10), 14 padding: EdgeInsets.all(10),
14 - color: Colors.red, 15 + // color: Colors.red,
15 child: CircularProgressIndicator( 16 child: CircularProgressIndicator(
16 value: value, 17 value: value,
17 // strokeWidth: 14, 18 // strokeWidth: 14,
@@ -41,8 +42,8 @@ class Progress extends StatelessWidget { @@ -41,8 +42,8 @@ class Progress extends StatelessWidget {
41 // Column( 42 // Column(
42 // children: [ 43 // children: [
43 Container( 44 Container(
44 - width: ScreenUtil().setWidth(100 * 2),  
45 - height: ScreenUtil().setWidth(100 * 2), 45 + width: ScreenUtil().setWidth(size * 2),
  46 + height: ScreenUtil().setWidth(size * 2),
46 color: Color.fromRGBO(0, 0, 0, 0.5), 47 color: Color.fromRGBO(0, 0, 0, 0.5),
47 child: Center( 48 child: Center(
48 child: Text('${integer}${unit}', 49 child: Text('${integer}${unit}',
  1 +import 'package:flutter/material.dart';
  2 +import 'package:one_key/models/store_info.dart';
  3 +
  4 +/**
  5 + * 第三方登陆
  6 + */
  7 +class CreateStoreModel extends ChangeNotifier {
  8 + StoreInfo storeInfo; //新建店铺基本信息
  9 +}
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:one_key/constant/constant.dart'; 2 import 'package:one_key/constant/constant.dart';
  3 +import 'package:one_key/constant/state.dart';
  4 +import 'package:one_key/models/check_seller_acc_model.dart';
3 import 'package:one_key/models/phone_code_model.dart'; 5 import 'package:one_key/models/phone_code_model.dart';
4 import 'package:one_key/net/base_resp.dart'; 6 import 'package:one_key/net/base_resp.dart';
5 import 'package:one_key/net/dio_util.dart'; 7 import 'package:one_key/net/dio_util.dart';
@@ -10,9 +12,10 @@ import 'package:one_key/utils/utils.dart'; @@ -10,9 +12,10 @@ import 'package:one_key/utils/utils.dart';
10 * 第三方登陆 12 * 第三方登陆
11 */ 13 */
12 class OtherLoginProvider extends ChangeNotifier { 14 class OtherLoginProvider extends ChangeNotifier {
13 - String phone; //手机号码  
14 String code; //验证码 15 String code; //验证码
15 PhoneCodeSunModel phoneCodeSunModel; 16 PhoneCodeSunModel phoneCodeSunModel;
  17 + PageState pageState = PageState.Loading; //是否有店铺
  18 + List<CheckSellerAccSunModel> sellerList = []; //绑定微信或者手机号码的商家列表
16 19
17 /// 给手机发送短信验证码 20 /// 给手机发送短信验证码
18 Future<bool> getPhoneCode(BuildContext context, Map<String, String> params, 21 Future<bool> getPhoneCode(BuildContext context, Map<String, String> params,
@@ -37,4 +40,30 @@ class OtherLoginProvider extends ChangeNotifier { @@ -37,4 +40,30 @@ class OtherLoginProvider extends ChangeNotifier {
37 return false; 40 return false;
38 } 41 }
39 } 42 }
  43 +
  44 + /// APP微信登录后检测是否存在商家
  45 + Future<List<CheckSellerAccSunModel>> checkSellerAcc(
  46 + BuildContext context, Map<String, String> params,
  47 + {isShowLoading = true, showLoading = false}) async {
  48 + BaseResp<dynamic> baseResp = await DioUtil()
  49 + .request<dynamic>(context, Method.get, HttpUrl.check_seller_acc,
  50 + data: params, showLoading: showLoading)
  51 + .catchError((error) {});
  52 + if (baseResp.code == Constant.status_success) {
  53 + if (baseResp.data.isNotEmpty) {
  54 + //解析解析
  55 + pageState = PageState.Success;
  56 + sellerList = CheckSellerAccModel.fromJson(baseResp.responseData).data;
  57 + } else {
  58 + pageState = PageState.Empty;
  59 + }
  60 + } else {
  61 + if (baseResp != null) {
  62 + Utils.showToast(baseResp.msg ?? "");
  63 + }
  64 + pageState = PageState.ConnectivityError;
  65 + }
  66 + notifyListeners();
  67 + return sellerList;
  68 + }
40 } 69 }
@@ -71,7 +71,7 @@ class UserModel with ChangeNotifier { @@ -71,7 +71,7 @@ class UserModel with ChangeNotifier {
71 "noon": "", 71 "noon": "",
72 "night": "", 72 "night": "",
73 }; 73 };
74 - _saveUserInfo(User.fromJson(userMap)); 74 + saveUserInfo(User.fromJson(userMap));
75 return getSellerInfo( 75 return getSellerInfo(
76 context, 76 context,
77 {"seller_id": seller['id'], "seller_openid": seller['openid']}, 77 {"seller_id": seller['id'], "seller_openid": seller['openid']},
@@ -101,7 +101,7 @@ class UserModel with ChangeNotifier { @@ -101,7 +101,7 @@ class UserModel with ChangeNotifier {
101 user['morning'] = daily['morning']; 101 user['morning'] = daily['morning'];
102 user['noon'] = daily['noon']; 102 user['noon'] = daily['noon'];
103 user['night'] = daily['night']; 103 user['night'] = daily['night'];
104 - _saveUserInfo(User.fromJson(user)); 104 + saveUserInfo(User.fromJson(user));
105 App.sp.setBool("isLogin", true); 105 App.sp.setBool("isLogin", true);
106 App.sp.setString("is_call_tel", seller['is_call_tel'].toString()); 106 App.sp.setString("is_call_tel", seller['is_call_tel'].toString());
107 NavigatorUtil.goHomePage(context); 107 NavigatorUtil.goHomePage(context);
@@ -253,7 +253,7 @@ class UserModel with ChangeNotifier { @@ -253,7 +253,7 @@ class UserModel with ChangeNotifier {
253 } 253 }
254 254
255 /// 保存用户信息到 sp 255 /// 保存用户信息到 sp
256 - _saveUserInfo(User user) { 256 + saveUserInfo(User user) {
257 _user = user; 257 _user = user;
258 App.sp.setString('user', json.encode(user.toJson())); 258 App.sp.setString('user', json.encode(user.toJson()));
259 } 259 }
@@ -84,4 +84,5 @@ class MyColours { @@ -84,4 +84,5 @@ class MyColours {
84 static const Color color_C19E5B = Color(0xffC19E5B); 84 static const Color color_C19E5B = Color(0xffC19E5B);
85 static const Color color_EEDBC4 = Color(0xffEEDBC4); 85 static const Color color_EEDBC4 = Color(0xffEEDBC4);
86 static const Color color_BA9953 = Color(0xffBA9953); 86 static const Color color_BA9953 = Color(0xffBA9953);
  87 + static const Color color_D7F7F7 = Color(0xffD7F7F7);
87 } 88 }
@@ -3,7 +3,6 @@ import 'dart:convert'; @@ -3,7 +3,6 @@ import 'dart:convert';
3 import 'package:fluro/fluro.dart'; 3 import 'package:fluro/fluro.dart';
4 import 'package:flutter/material.dart'; 4 import 'package:flutter/material.dart';
5 import 'package:one_key/models/coupon_model.dart'; 5 import 'package:one_key/models/coupon_model.dart';
6 -import 'package:one_key/models/notebook.dart';  
7 import 'package:one_key/models/notebook_detail.dart'; 6 import 'package:one_key/models/notebook_detail.dart';
8 import 'package:one_key/models/table_list.dart'; 7 import 'package:one_key/models/table_list.dart';
9 import 'package:one_key/pages/coupon/coupon_detail_page.dart'; 8 import 'package:one_key/pages/coupon/coupon_detail_page.dart';
@@ -283,7 +282,8 @@ var baseInfoPageHandler = new Handler( @@ -283,7 +282,8 @@ var baseInfoPageHandler = new Handler(
283 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode( 282 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode(
284 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first))); 283 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first)));
285 284
286 - return BaseInfoPage(); 285 + return ChangeNotifierProvider<UploadImageProvider>(
  286 + create: (_) => UploadImageProvider(), child: BaseInfoPage());
287 }); 287 });
288 288
289 ///绑定手机号码页面 289 ///绑定手机号码页面
@@ -301,8 +301,9 @@ var ifNeedCreateStorePageHandler = new Handler( @@ -301,8 +301,9 @@ var ifNeedCreateStorePageHandler = new Handler(
301 handlerFunc: (BuildContext context, Map<String, List<Object>> params) { 301 handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
302 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode( 302 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode(
303 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first))); 303 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first)));
304 -  
305 - return IfNeedCreateStore(); 304 + return ChangeNotifierProvider<OtherLoginProvider>(
  305 + create: (_) => OtherLoginProvider(),
  306 + child: IfNeedCreateStore());
306 }); 307 });
307 308
308 ///新建店铺页面 309 ///新建店铺页面
@@ -338,7 +339,8 @@ var enterStoreNamePageHandler = new Handler( @@ -338,7 +339,8 @@ var enterStoreNamePageHandler = new Handler(
338 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode( 339 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode(
339 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first))); 340 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first)));
340 // String urlStr = FluroConvertUtils.fluroCnParamsDecode(params["urlStr"].first); 341 // String urlStr = FluroConvertUtils.fluroCnParamsDecode(params["urlStr"].first);
341 - return EnterStoreNamePage(); 342 + return ChangeNotifierProvider<UploadImageProvider>(
  343 + create: (_) => UploadImageProvider(), child: EnterStoreNamePage());
342 }); 344 });
343 345
344 ///店铺地址 346 ///店铺地址
@@ -374,7 +376,8 @@ var enterStorePhonePageHandler = new Handler( @@ -374,7 +376,8 @@ var enterStorePhonePageHandler = new Handler(
374 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode( 376 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode(
375 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first))); 377 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first)));
376 // String urlStr = FluroConvertUtils.fluroCnParamsDecode(params["urlStr"].first); 378 // String urlStr = FluroConvertUtils.fluroCnParamsDecode(params["urlStr"].first);
377 - return EnterStorePhonePage(); 379 + return ChangeNotifierProvider<OtherLoginProvider>(
  380 + create: (_) => OtherLoginProvider(), child: EnterStorePhonePage());
378 }); 381 });
379 382
380 ///店铺门头照片 383 ///店铺门头照片
@@ -383,8 +386,9 @@ var enterStoreFrontPhotoPageHandler = new Handler( @@ -383,8 +386,9 @@ var enterStoreFrontPhotoPageHandler = new Handler(
383 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode( 386 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode(
384 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first))); 387 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first)));
385 // String urlStr = FluroConvertUtils.fluroCnParamsDecode(params["urlStr"].first); 388 // String urlStr = FluroConvertUtils.fluroCnParamsDecode(params["urlStr"].first);
386 - return ChangeNotifierProvider<UploadImageProvider>(  
387 - create: (_) => UploadImageProvider(), child: EnterStoreFrontPhotoPage()); 389 + return EnterStoreFrontPhotoPage();
  390 + // return ChangeNotifierProvider<UploadImageProvider>(
  391 + // create: (_) => UploadImageProvider(), child: EnterStoreFrontPhotoPage());
388 }); 392 });
389 393
390 ///店铺环境 394 ///店铺环境
@@ -393,6 +397,7 @@ var enterStoreEnvironmentPageHandler = new Handler( @@ -393,6 +397,7 @@ var enterStoreEnvironmentPageHandler = new Handler(
393 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode( 397 // CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode(
394 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first))); 398 // FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first)));
395 // String urlStr = FluroConvertUtils.fluroCnParamsDecode(params["urlStr"].first); 399 // String urlStr = FluroConvertUtils.fluroCnParamsDecode(params["urlStr"].first);
396 - return ChangeNotifierProvider<UploadImageProvider>(  
397 - create: (_) => UploadImageProvider(), child: EnterStoreEnvironmentPage()); 400 + return EnterStoreEnvironmentPage();
  401 + // return ChangeNotifierProvider<UploadImageProvider>(
  402 + // create: (_) => UploadImageProvider(), child: EnterStoreEnvironmentPage());
398 }); 403 });
@@ -203,8 +203,9 @@ class NavigatorUtil { @@ -203,8 +203,9 @@ class NavigatorUtil {
203 203
204 /// 是否新建店铺页面 204 /// 是否新建店铺页面
205 static Future<dynamic> goIfNeedCreateStorePage(BuildContext context, 205 static Future<dynamic> goIfNeedCreateStorePage(BuildContext context,
206 - {replace = false}) {  
207 - return _navigateTo(context, "${Routes.if_need_create_store}", 206 + {replace = false, bool noStore}) {
  207 + return _navigateTo(
  208 + context, "${Routes.if_need_create_store}?noStore=${noStore}",
208 replace: replace); 209 replace: replace);
209 } 210 }
210 211
@@ -28,6 +28,22 @@ import '../app.dart'; @@ -28,6 +28,22 @@ import '../app.dart';
28 typedef BookTimeSetCallback = void Function(bool needChange); 28 typedef BookTimeSetCallback = void Function(bool needChange);
29 29
30 class Utils { 30 class Utils {
  31 + /**
  32 + * 获取图片后缀
  33 + *
  34 + * @param img_path 图片或者视频路径
  35 + * @return
  36 + */
  37 + static String getPicSuffix(String img_path) {
  38 + if (img_path == null || img_path.indexOf(".") == -1) {
  39 + return ""; //如果图片地址为null或者地址中没有"."就返回""
  40 + }
  41 + return img_path
  42 + .substring(img_path.lastIndexOf(".") + 1)
  43 + .trim()
  44 + .toLowerCase();
  45 + }
  46 +
31 ///手机号码格式验证 47 ///手机号码格式验证
32 static bool phoneRegExp(String phone) { 48 static bool phoneRegExp(String phone) {
33 RegExp exp = RegExp( 49 RegExp exp = RegExp(
@@ -295,6 +295,13 @@ packages: @@ -295,6 +295,13 @@ packages:
295 url: "https://pub.flutter-io.cn" 295 url: "https://pub.flutter-io.cn"
296 source: hosted 296 source: hosted
297 version: "3.0.10" 297 version: "3.0.10"
  298 + dotted_border:
  299 + dependency: "direct main"
  300 + description:
  301 + name: dotted_border
  302 + url: "https://pub.flutter-io.cn"
  303 + source: hosted
  304 + version: "1.0.7"
298 easy_contact_picker: 305 easy_contact_picker:
299 dependency: "direct main" 306 dependency: "direct main"
300 description: 307 description:
@@ -674,6 +681,20 @@ packages: @@ -674,6 +681,20 @@ packages:
674 url: "https://pub.flutter-io.cn" 681 url: "https://pub.flutter-io.cn"
675 source: hosted 682 source: hosted
676 version: "1.8.0-nullsafety.1" 683 version: "1.8.0-nullsafety.1"
  684 + path_drawing:
  685 + dependency: transitive
  686 + description:
  687 + name: path_drawing
  688 + url: "https://pub.flutter-io.cn"
  689 + source: hosted
  690 + version: "0.4.1+1"
  691 + path_parsing:
  692 + dependency: transitive
  693 + description:
  694 + name: path_parsing
  695 + url: "https://pub.flutter-io.cn"
  696 + source: hosted
  697 + version: "0.1.4"
677 path_provider: 698 path_provider:
678 dependency: "direct main" 699 dependency: "direct main"
679 description: 700 description:
@@ -109,6 +109,8 @@ dependencies: @@ -109,6 +109,8 @@ dependencies:
109 video_compress: ^2.1.1 109 video_compress: ^2.1.1
110 #高德地图 110 #高德地图
111 amap_map_fluttify: 0.25.0 111 amap_map_fluttify: 0.25.0
  112 + #虚线边框
  113 + dotted_border: ^1.0.7
112 114
113 115
114 116