Showing
30 changed files
with
980 additions
and
443 deletions
assets/add_store.png
0 → 100644
471 Bytes
assets/add_video.png
0 → 100644
1.67 KB
assets/complete.png
0 → 100644
10 KB
assets/no_image.png
0 → 100644
256 KB
assets/play.png
0 → 100644
4.16 KB
| @@ -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}', |
lib/provider/create_store_model.dart
0 → 100644
| 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: |
-
Please register or login to post a comment