| @@ -537,7 +537,7 @@ | |||||
| }, | }, | ||||
| { | { | ||||
| "name": "url_launcher", | "name": "url_launcher", | ||||
| "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher-5.7.4", | |||||
| "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher-5.7.5", | |||||
| "packageUri": "lib/", | "packageUri": "lib/", | ||||
| "languageVersion": "2.1" | "languageVersion": "2.1" | ||||
| }, | }, | ||||
| @@ -617,10 +617,10 @@ | |||||
| "name": "zhiying_base_widget", | "name": "zhiying_base_widget", | ||||
| "rootUri": "../", | "rootUri": "../", | ||||
| "packageUri": "lib/", | "packageUri": "lib/", | ||||
| "languageVersion": "2.1" | |||||
| "languageVersion": "2.8" | |||||
| } | } | ||||
| ], | ], | ||||
| "generated": "2020-10-15T12:19:28.149342Z", | |||||
| "generated": "2020-10-16T06:45:33.016683Z", | |||||
| "generator": "pub", | "generator": "pub", | ||||
| "generatorVersion": "2.8.2" | "generatorVersion": "2.8.2" | ||||
| } | } | ||||
| @@ -85,7 +85,7 @@ class _GoodsShareImageState extends State<GoodsShareImage> | |||||
| return; | return; | ||||
| Navigator.push( | Navigator.push( | ||||
| context, | context, | ||||
| MaterialPageRoute( | |||||
| CupertinoPageRoute( | |||||
| builder: (context) => GoodsShareEditor(_style))); | builder: (context) => GoodsShareEditor(_style))); | ||||
| }, | }, | ||||
| onTempChange: (temp) { | onTempChange: (temp) { | ||||
| @@ -86,7 +86,7 @@ class _GoodsShareLinkState extends State<GoodsShareLink> | |||||
| return; | return; | ||||
| Navigator.push( | Navigator.push( | ||||
| context, | context, | ||||
| MaterialPageRoute( | |||||
| CupertinoPageRoute( | |||||
| builder: (context) => GoodsShareEditor(_style))); | builder: (context) => GoodsShareEditor(_style))); | ||||
| }, | }, | ||||
| onTempChange: (temp) { | onTempChange: (temp) { | ||||
| @@ -1,4 +1,5 @@ | |||||
| import 'package:connectivity/connectivity.dart'; | import 'package:connectivity/connectivity.dart'; | ||||
| import 'package:flutter/cupertino.dart'; | |||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:zhiying_base_widget/pages/home_page/home_page.dart'; | import 'package:zhiying_base_widget/pages/home_page/home_page.dart'; | ||||
| import 'package:zhiying_comm/util/application.dart'; | import 'package:zhiying_comm/util/application.dart'; | ||||
| @@ -26,10 +27,10 @@ class _LaunchPageState extends State<LaunchPage> { | |||||
| Application.init().then((_) { | Application.init().then((_) { | ||||
| if (widget.builder != null) { | if (widget.builder != null) { | ||||
| Navigator.of(context) | Navigator.of(context) | ||||
| .pushReplacement(MaterialPageRoute(builder: widget.builder)); | |||||
| .pushReplacement(CupertinoPageRoute(builder: widget.builder)); | |||||
| } else { | } else { | ||||
| Navigator.of(context).pushReplacement( | Navigator.of(context).pushReplacement( | ||||
| MaterialPageRoute(builder: (context) => HomePage())); | |||||
| CupertinoPageRoute(builder: (context) => HomePage())); | |||||
| } | } | ||||
| }).catchError((err) { | }).catchError((err) { | ||||
| Logger.error(err); | Logger.error(err); | ||||
| @@ -0,0 +1,21 @@ | |||||
| // 订单筛选条件 | |||||
| class OrderFilterModel { | |||||
| final String state; // 否 string 订单状态0已付款,1已收货,2成功,3失效 | |||||
| final String keyword; // 否 string 关键字 | |||||
| final String start_time; // 否 string 开始时间 | |||||
| final String end_time; // 否 string 结束时间 | |||||
| final String type; // 否 string 订单类型self自购, share分享, fans粉丝 | |||||
| final String provider; // 否 string 供应商taobao, jd, pdd, vip, kaola,suning,own自营 | |||||
| final String page_no; // 否 string 页码 | |||||
| final String page_size; | |||||
| OrderFilterModel( | |||||
| {this.state, | |||||
| this.keyword, | |||||
| this.start_time, | |||||
| this.end_time, | |||||
| this.type, | |||||
| this.provider, | |||||
| this.page_no, | |||||
| this.page_size}); // 否 string 页数 | |||||
| } | |||||
| @@ -0,0 +1,34 @@ | |||||
| import 'package:event_bus/event_bus.dart'; | |||||
| import 'package:flutter/material.dart'; | |||||
| import 'package:zhiying_base_widget/pages/orders_page/views/order_item_widget.dart'; | |||||
| import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
| class OrderContentPage extends StatefulWidget { | |||||
| final EventBus filter; | |||||
| const OrderContentPage({Key key, this.filter}) : super(key: key); | |||||
| @override | |||||
| _OrderContentPageState createState() => _OrderContentPageState(); | |||||
| } | |||||
| class _OrderContentPageState extends State<OrderContentPage> { | |||||
| @override | |||||
| void initState() { | |||||
| // 每次滑动刷新数据 | |||||
| widget.filter?.streamController?.add((filter) { | |||||
| Logger.debug(filter.toString()); | |||||
| }); | |||||
| super.initState(); | |||||
| } | |||||
| @override | |||||
| Widget build(BuildContext context) { | |||||
| print(context.toString()); | |||||
| return ListView.builder( | |||||
| itemCount: 20, | |||||
| itemBuilder: (context, index) { | |||||
| return OrderItemWidget(); | |||||
| }); | |||||
| } | |||||
| } | |||||
| @@ -1,8 +1,10 @@ | |||||
| import 'package:event_bus/event_bus.dart'; | |||||
| import 'package:flutter/cupertino.dart'; | import 'package:flutter/cupertino.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:zhiying_base_widget/pages/orders_page/models/order_filter_model.dart'; | |||||
| import 'package:zhiying_base_widget/pages/orders_page/order_content_page.dart'; | |||||
| import 'package:zhiying_base_widget/pages/orders_page/order_search_page.dart'; | import 'package:zhiying_base_widget/pages/orders_page/order_search_page.dart'; | ||||
| import 'package:zhiying_base_widget/pages/orders_page/views/order_filter.dart'; | import 'package:zhiying_base_widget/pages/orders_page/views/order_filter.dart'; | ||||
| import 'package:zhiying_base_widget/pages/orders_page/views/order_item_widget.dart'; | |||||
| import 'package:zhiying_base_widget/pages/orders_page/views/order_serch_widget.dart'; | import 'package:zhiying_base_widget/pages/orders_page/views/order_serch_widget.dart'; | ||||
| import 'package:zhiying_base_widget/pages/orders_page/views/order_tabbar_widget.dart'; | import 'package:zhiying_base_widget/pages/orders_page/views/order_tabbar_widget.dart'; | ||||
| @@ -10,7 +12,8 @@ import 'package:zhiying_base_widget/pages/orders_page/views/order_tabbar_widget. | |||||
| class OrdersPage extends StatefulWidget { | class OrdersPage extends StatefulWidget { | ||||
| final Map<String, dynamic> data; | final Map<String, dynamic> data; | ||||
| const OrdersPage(this.data, { | |||||
| const OrdersPage( | |||||
| this.data, { | |||||
| Key key, | Key key, | ||||
| }) : super(key: key); | }) : super(key: key); | ||||
| @@ -42,19 +45,19 @@ class _OrdersPageState extends State<OrdersPage> { | |||||
| backgroundColor: Colors.white, | backgroundColor: Colors.white, | ||||
| leading: Navigator.canPop(context) | leading: Navigator.canPop(context) | ||||
| ? GestureDetector( | ? GestureDetector( | ||||
| child: Container( | |||||
| padding: EdgeInsets.zero, | |||||
| child: Icon( | |||||
| Icons.arrow_back_ios, | |||||
| size: 20, | |||||
| ), | |||||
| ), | |||||
| onTap: () { | |||||
| if (Navigator.canPop(context)) { | |||||
| Navigator.pop(context); | |||||
| } | |||||
| }, | |||||
| ) | |||||
| child: Container( | |||||
| padding: EdgeInsets.zero, | |||||
| child: Icon( | |||||
| Icons.arrow_back_ios, | |||||
| size: 20, | |||||
| ), | |||||
| ), | |||||
| onTap: () { | |||||
| if (Navigator.canPop(context)) { | |||||
| Navigator.pop(context); | |||||
| } | |||||
| }, | |||||
| ) | |||||
| : Container(), | : Container(), | ||||
| middle: Text( | middle: Text( | ||||
| '我的订单', | '我的订单', | ||||
| @@ -75,14 +78,45 @@ class _OrdersContainer extends StatefulWidget { | |||||
| class _OrdersContainerState extends State<_OrdersContainer> | class _OrdersContainerState extends State<_OrdersContainer> | ||||
| with TickerProviderStateMixin { | with TickerProviderStateMixin { | ||||
| TabController _tabController; | TabController _tabController; | ||||
| GlobalKey _tabKey = GlobalKey(); | GlobalKey _tabKey = GlobalKey(); | ||||
| final EventBus _eventBus = EventBus(); | |||||
| final OrderFilterModel _filter = OrderFilterModel(); | |||||
| bool _isFilterShow = false; | bool _isFilterShow = false; | ||||
| List<String> _titles = [ | |||||
| '全部', | |||||
| '已付款', | |||||
| '已结算', | |||||
| '已失效', | |||||
| '全部', | |||||
| '已付款', | |||||
| ]; | |||||
| List<Widget> _contents = []; | |||||
| @override | @override | ||||
| void initState() { | void initState() { | ||||
| _tabController = TabController(length: 6, vsync: this); | _tabController = TabController(length: 6, vsync: this); | ||||
| _contents = [ | |||||
| OrderContentPage( | |||||
| filter: _eventBus, | |||||
| ), | |||||
| OrderContentPage( | |||||
| filter: _eventBus, | |||||
| ), | |||||
| OrderContentPage( | |||||
| filter: _eventBus, | |||||
| ), | |||||
| OrderContentPage( | |||||
| filter: _eventBus, | |||||
| ), | |||||
| OrderContentPage( | |||||
| filter: _eventBus, | |||||
| ), | |||||
| OrderContentPage( | |||||
| filter: _eventBus, | |||||
| ), | |||||
| ]; | |||||
| super.initState(); | super.initState(); | ||||
| } | } | ||||
| @@ -94,21 +128,14 @@ class _OrdersContainerState extends State<_OrdersContainer> | |||||
| child: OrderSearchWidget(), | child: OrderSearchWidget(), | ||||
| onTap: () { | onTap: () { | ||||
| Navigator.of(context) | Navigator.of(context) | ||||
| .push(MaterialPageRoute(builder: (BuildContext context) { | |||||
| .push(CupertinoPageRoute(builder: (BuildContext context) { | |||||
| return OrderSearchPage(); | return OrderSearchPage(); | ||||
| })); | })); | ||||
| }, | }, | ||||
| ), | ), | ||||
| OrderTabbarWidget( | OrderTabbarWidget( | ||||
| _tabController, | _tabController, | ||||
| [ | |||||
| '全部', | |||||
| '已付款', | |||||
| '已结算', | |||||
| '已失效', | |||||
| '全部', | |||||
| '已付款', | |||||
| ], | |||||
| _titles, | |||||
| key: _tabKey, | key: _tabKey, | ||||
| onMoreClick: () { | onMoreClick: () { | ||||
| setState(() { | setState(() { | ||||
| @@ -119,11 +146,10 @@ class _OrdersContainerState extends State<_OrdersContainer> | |||||
| Expanded( | Expanded( | ||||
| child: Stack( | child: Stack( | ||||
| children: <Widget>[ | children: <Widget>[ | ||||
| ListView.builder( | |||||
| itemCount: 20, | |||||
| itemBuilder: (context, index) { | |||||
| return OrderItemWidget(); | |||||
| }), | |||||
| TabBarView( | |||||
| children: _contents, | |||||
| controller: _tabController, | |||||
| ), | |||||
| Visibility( | Visibility( | ||||
| visible: _isFilterShow, | visible: _isFilterShow, | ||||
| child: OrderFilterWidget(), | child: OrderFilterWidget(), | ||||
| @@ -160,7 +160,7 @@ class _SecurityMobileUnbindState extends State<SecurityMobileUnbind> { | |||||
| method: NetMethod.POST, onSuccess: (result) { | method: NetMethod.POST, onSuccess: (result) { | ||||
| _status['mobile_setting'] = '0'; | _status['mobile_setting'] = '0'; | ||||
| _status['code'] = _codeController.text; | _status['code'] = _codeController.text; | ||||
| Navigator.of(context).pushReplacement(MaterialPageRoute( | |||||
| Navigator.of(context).pushReplacement(CupertinoPageRoute( | |||||
| builder: (context) => SecurityMobile(widget.model))); | builder: (context) => SecurityMobile(widget.model))); | ||||
| }); | }); | ||||
| } | } | ||||
| @@ -150,7 +150,7 @@ class _SecurityUnbinAlipayState extends State<SecurityUnbinAlipay> { | |||||
| Logger.debug(result); | Logger.debug(result); | ||||
| Fluttertoast.showToast(msg: '解绑成功'); | Fluttertoast.showToast(msg: '解绑成功'); | ||||
| _status['alipay_setting'] = '0'; | _status['alipay_setting'] = '0'; | ||||
| Navigator.of(context).pushReplacement(MaterialPageRoute( | |||||
| Navigator.of(context).pushReplacement(CupertinoPageRoute( | |||||
| builder: (context) => SecurityBindAlipayPage(widget.model))); | builder: (context) => SecurityBindAlipayPage(widget.model))); | ||||
| }); | }); | ||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| import 'dart:convert'; | import 'dart:convert'; | ||||
| import 'package:cached_network_image/cached_network_image.dart'; | import 'package:cached_network_image/cached_network_image.dart'; | ||||
| import 'package:flutter/cupertino.dart'; | |||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_alibc/alibc_model.dart'; | import 'package:flutter_alibc/alibc_model.dart'; | ||||
| import 'package:flutter_alibc/flutter_alibc.dart'; | import 'package:flutter_alibc/flutter_alibc.dart'; | ||||
| @@ -55,7 +56,7 @@ class _GooddsDetailsFooterContainerState | |||||
| void _openHome() { | void _openHome() { | ||||
| Navigator.pushAndRemoveUntil( | Navigator.pushAndRemoveUntil( | ||||
| context, | context, | ||||
| MaterialPageRoute( | |||||
| CupertinoPageRoute( | |||||
| builder: (BuildContext context) => | builder: (BuildContext context) => | ||||
| PageFactory.create('homePage', null)), | PageFactory.create('homePage', null)), | ||||
| (Route<dynamic> route) => false, | (Route<dynamic> route) => false, | ||||
| @@ -93,7 +94,7 @@ class _GooddsDetailsFooterContainerState | |||||
| return; | return; | ||||
| } | } | ||||
| } | } | ||||
| Navigator.of(context).push(MaterialPageRoute( | |||||
| Navigator.of(context).push(CupertinoPageRoute( | |||||
| builder: (context) => GoodsSharePage(widget.model))); | builder: (context) => GoodsSharePage(widget.model))); | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,12 +1,13 @@ | |||||
| import 'package:flutter/material.dart'; | |||||
| import 'package:cached_network_image/cached_network_image.dart'; | import 'package:cached_network_image/cached_network_image.dart'; | ||||
| import 'package:flutter/cupertino.dart'; | |||||
| import 'package:flutter/material.dart'; | |||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | |||||
| import 'package:flutter_swiper/flutter_swiper.dart'; | import 'package:flutter_swiper/flutter_swiper.dart'; | ||||
| import 'package:zhiying_base_widget/widgets/home/home_quick_entry/bloc/bloc.dart'; | import 'package:zhiying_base_widget/widgets/home/home_quick_entry/bloc/bloc.dart'; | ||||
| import 'package:zhiying_base_widget/widgets/home/home_quick_entry/bloc/home_quick_entry_repository.dart'; | import 'package:zhiying_base_widget/widgets/home/home_quick_entry/bloc/home_quick_entry_repository.dart'; | ||||
| import 'package:zhiying_base_widget/widgets/home/home_quick_entry/home_quick_entry_sk.dart'; | import 'package:zhiying_base_widget/widgets/home/home_quick_entry/home_quick_entry_sk.dart'; | ||||
| import 'package:zhiying_base_widget/widgets/home/home_quick_entry/model/home_quick_entry_model.dart'; | import 'package:zhiying_base_widget/widgets/home/home_quick_entry/model/home_quick_entry_model.dart'; | ||||
| import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | |||||
| /// | /// | ||||
| /// 首页的快速入口widget | /// 首页的快速入口widget | ||||
| @@ -19,7 +20,8 @@ class HomeQuickEntryWidget extends StatelessWidget { | |||||
| @override | @override | ||||
| Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
| return BlocProvider<HomeQuickEntryBloc>( | return BlocProvider<HomeQuickEntryBloc>( | ||||
| create: (_) => HomeQuickEntryBloc(repository: HomeQuickEntryRepository())..add(HomeQuickEntryInitEvent(model: model)), | |||||
| create: (_) => HomeQuickEntryBloc(repository: HomeQuickEntryRepository()) | |||||
| ..add(HomeQuickEntryInitEvent(model: model)), | |||||
| child: HomeQuickEntryWidgetContianer(), | child: HomeQuickEntryWidgetContianer(), | ||||
| ); | ); | ||||
| } | } | ||||
| @@ -27,10 +29,12 @@ class HomeQuickEntryWidget extends StatelessWidget { | |||||
| class HomeQuickEntryWidgetContianer extends StatefulWidget { | class HomeQuickEntryWidgetContianer extends StatefulWidget { | ||||
| @override | @override | ||||
| _HomeQuickEntryWidgetContianerState createState() => _HomeQuickEntryWidgetContianerState(); | |||||
| _HomeQuickEntryWidgetContianerState createState() => | |||||
| _HomeQuickEntryWidgetContianerState(); | |||||
| } | } | ||||
| class _HomeQuickEntryWidgetContianerState extends State<HomeQuickEntryWidgetContianer> { | |||||
| class _HomeQuickEntryWidgetContianerState | |||||
| extends State<HomeQuickEntryWidgetContianer> { | |||||
| @override | @override | ||||
| Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
| return BlocConsumer<HomeQuickEntryBloc, HomeQuickEntryState>( | return BlocConsumer<HomeQuickEntryBloc, HomeQuickEntryState>( | ||||
| @@ -55,15 +59,20 @@ class _HomeQuickEntryWidgetContianerState extends State<HomeQuickEntryWidgetCont | |||||
| ); | ); | ||||
| } | } | ||||
| Widget _getMainWidget(HomeQuickEntryModel model) { | Widget _getMainWidget(HomeQuickEntryModel model) { | ||||
| int dataSize = 15;//model?.type_normal?.length ?? 0; // 总数 | |||||
| int columSize = 5;//int.parse(model?.colum_size ?? '5'); // 列数 | |||||
| int rowSize = 2;//int.parse(model?.row_size ?? '2'); // 行数 | |||||
| rowSize = columSize * rowSize <= dataSize ? rowSize : dataSize % columSize == 0 ? dataSize ~/ columSize : (dataSize ~/ columSize) +1; | |||||
| int dataSize = 15; //model?.type_normal?.length ?? 0; // 总数 | |||||
| int columSize = 5; //int.parse(model?.colum_size ?? '5'); // 列数 | |||||
| int rowSize = 2; //int.parse(model?.row_size ?? '2'); // 行数 | |||||
| rowSize = columSize * rowSize <= dataSize | |||||
| ? rowSize | |||||
| : dataSize % columSize == 0 | |||||
| ? dataSize ~/ columSize | |||||
| : (dataSize ~/ columSize) + 1; | |||||
| // 页数 总数 % (columSize * rowSize) | // 页数 总数 % (columSize * rowSize) | ||||
| int pageCount = dataSize % (rowSize * columSize) == 0 ? dataSize ~/ (rowSize * columSize) : (dataSize ~/ (rowSize * columSize)) + 1; | |||||
| int pageCount = dataSize % (rowSize * columSize) == 0 | |||||
| ? dataSize ~/ (rowSize * columSize) | |||||
| : (dataSize ~/ (rowSize * columSize)) + 1; | |||||
| // 进度条底部距离 | // 进度条底部距离 | ||||
| const double bottomSize = 15.0; | const double bottomSize = 15.0; | ||||
| @@ -75,8 +84,9 @@ class _HomeQuickEntryWidgetContianerState extends State<HomeQuickEntryWidgetCont | |||||
| const double titleHeight = 20; | const double titleHeight = 20; | ||||
| // 总体的高度 == 行数 * (图片高度 + 标题高度 + 元素之间的边距) + 上下内边距 | // 总体的高度 == 行数 * (图片高度 + 标题高度 + 元素之间的边距) + 上下内边距 | ||||
| double containerHeight = rowSize * (iconHeight + titleHeight + itemPadding*2) + (bottomSize*2); | |||||
| double containerHeight = | |||||
| rowSize * (iconHeight + titleHeight + itemPadding * 2) + | |||||
| (bottomSize * 2); | |||||
| return Container( | return Container( | ||||
| // padding: const EdgeInsets.only(bottom: bottomSize, top: bottomSize), | // padding: const EdgeInsets.only(bottom: bottomSize, top: bottomSize), | ||||
| @@ -127,7 +137,8 @@ class _HomeQuickEntryWidgetContianerState extends State<HomeQuickEntryWidgetCont | |||||
| list.add(i); | list.add(i); | ||||
| } | } | ||||
| return SwiperCustomPagination(builder: (BuildContext context, SwiperPluginConfig config) { | |||||
| return SwiperCustomPagination( | |||||
| builder: (BuildContext context, SwiperPluginConfig config) { | |||||
| return Align( | return Align( | ||||
| alignment: Alignment(0.0, 1), | alignment: Alignment(0.0, 1), | ||||
| child: Row( | child: Row( | ||||
| @@ -136,10 +147,13 @@ class _HomeQuickEntryWidgetContianerState extends State<HomeQuickEntryWidgetCont | |||||
| children: list.map((index) { | children: list.map((index) { | ||||
| var borderRadius; | var borderRadius; | ||||
| if (index == 0) { | if (index == 0) { | ||||
| borderRadius = BorderRadius.only(topLeft: Radius.circular(2), bottomLeft: Radius.circular(2)); | |||||
| borderRadius = BorderRadius.only( | |||||
| topLeft: Radius.circular(2), bottomLeft: Radius.circular(2)); | |||||
| } | } | ||||
| if (index == list.length - 1) { | if (index == list.length - 1) { | ||||
| borderRadius = BorderRadius.only(topRight: Radius.circular(2), bottomRight: Radius.circular(2)); | |||||
| borderRadius = BorderRadius.only( | |||||
| topRight: Radius.circular(2), | |||||
| bottomRight: Radius.circular(2)); | |||||
| } | } | ||||
| if (index == config.activeIndex) { | if (index == config.activeIndex) { | ||||
| @@ -149,7 +163,11 @@ class _HomeQuickEntryWidgetContianerState extends State<HomeQuickEntryWidgetCont | |||||
| return Container( | return Container( | ||||
| height: 4, | height: 4, | ||||
| width: 25, | width: 25, | ||||
| decoration: BoxDecoration(borderRadius: borderRadius, color: index == config.activeIndex ? HexColor.fromHex('#FF4242') : HexColor.fromHex('#FFFFFF')), | |||||
| decoration: BoxDecoration( | |||||
| borderRadius: borderRadius, | |||||
| color: index == config.activeIndex | |||||
| ? HexColor.fromHex('#FF4242') | |||||
| : HexColor.fromHex('#FFFFFF')), | |||||
| ); | ); | ||||
| }).toList(), | }).toList(), | ||||
| ), | ), | ||||
| @@ -170,13 +188,22 @@ class HomeQuickEntrySwiperItem extends StatelessWidget { | |||||
| final int dataSize; | final int dataSize; | ||||
| final double itemPadding; | final double itemPadding; | ||||
| const HomeQuickEntrySwiperItem({this.page, this.data, this.showDataSize, this.columSize, this.rowSize, this.itemPadding, this.dataSize}); | |||||
| const HomeQuickEntrySwiperItem( | |||||
| {this.page, | |||||
| this.data, | |||||
| this.showDataSize, | |||||
| this.columSize, | |||||
| this.rowSize, | |||||
| this.itemPadding, | |||||
| this.dataSize}); | |||||
| @override | @override | ||||
| Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
| // 当前显示的个数 | // 当前显示的个数 | ||||
| // int itemCount = (data.length - page * showDataSize) >= showDataSize ? showDataSize : (data.length - page * showDataSize); | // int itemCount = (data.length - page * showDataSize) >= showDataSize ? showDataSize : (data.length - page * showDataSize); | ||||
| int itemCount = (dataSize - page * showDataSize) >= showDataSize ? showDataSize : (dataSize - page * showDataSize); | |||||
| int itemCount = (dataSize - page * showDataSize) >= showDataSize | |||||
| ? showDataSize | |||||
| : (dataSize - page * showDataSize); | |||||
| print('${itemCount}'); | print('${itemCount}'); | ||||
| return Container( | return Container( | ||||
| // color: Colors.cyan, | // color: Colors.cyan, | ||||
| @@ -203,8 +230,12 @@ class HomeQuickEntrySwiperItem extends StatelessWidget { | |||||
| itemBuilder: (context, i) { | itemBuilder: (context, i) { | ||||
| // return HomeQuickEntryItem(data: data[itemCount == showDataSize ? page * showDataSize + i : page == 0 ? page + i : page * showDataSize + i], itemPaddding: itemPadding,); | // return HomeQuickEntryItem(data: data[itemCount == showDataSize ? page * showDataSize + i : page == 0 ? page + i : page * showDataSize + i], itemPaddding: itemPadding,); | ||||
| // 最后一行 | // 最后一行 | ||||
| bool isLast = i >= (rowSize -1) * columSize; | |||||
| return HomeQuickEntryItem(data: null, itemPaddding: itemPadding, isLastRow: isLast,); | |||||
| bool isLast = i >= (rowSize - 1) * columSize; | |||||
| return HomeQuickEntryItem( | |||||
| data: null, | |||||
| itemPaddding: itemPadding, | |||||
| isLastRow: isLast, | |||||
| ); | |||||
| }), | }), | ||||
| ); | ); | ||||
| } | } | ||||
| @@ -222,7 +253,7 @@ class HomeQuickEntryItem extends StatelessWidget { | |||||
| /// 子图标的点击 | /// 子图标的点击 | ||||
| _itemOnClick(context) { | _itemOnClick(context) { | ||||
| Navigator.push(context, MaterialPageRoute(builder: (context) { | |||||
| Navigator.push(context, CupertinoPageRoute(builder: (context) { | |||||
| return PageFactory.create('login', null); | return PageFactory.create('login', null); | ||||
| })); | })); | ||||
| } | } | ||||
| @@ -232,27 +263,30 @@ class HomeQuickEntryItem extends StatelessWidget { | |||||
| return GestureDetector( | return GestureDetector( | ||||
| onTap: () => _itemOnClick(context), | onTap: () => _itemOnClick(context), | ||||
| child: Container( | child: Container( | ||||
| margin: EdgeInsets.only(bottom: isLastRow ? 0 :0), | |||||
| margin: EdgeInsets.only(bottom: isLastRow ? 0 : 0), | |||||
| color: Colors.red, | color: Colors.red, | ||||
| child: Column( | child: Column( | ||||
| crossAxisAlignment: CrossAxisAlignment.center, | crossAxisAlignment: CrossAxisAlignment.center, | ||||
| mainAxisAlignment: MainAxisAlignment.start, | mainAxisAlignment: MainAxisAlignment.start, | ||||
| children: <Widget>[ | children: <Widget>[ | ||||
| // 图片 | // 图片 | ||||
| MyNetWorkImage(data?.img?? 'https://profile.csdnimg.cn/3/3/0/3_canhuashu'), | |||||
| MyNetWorkImage( | |||||
| data?.img ?? 'https://profile.csdnimg.cn/3/3/0/3_canhuashu'), | |||||
| Padding( | Padding( | ||||
| padding: const EdgeInsets.only(top: 5), | padding: const EdgeInsets.only(top: 5), | ||||
| child: Text( | child: Text( | ||||
| data?.title_1 ?? '京东', | data?.title_1 ?? '京东', | ||||
| style: TextStyle(color: HexColor.fromHex('#666666'), fontSize: 20.sp), | |||||
| style: TextStyle( | |||||
| color: HexColor.fromHex('#666666'), fontSize: 20.sp), | |||||
| )), | )), | ||||
| Padding( | Padding( | ||||
| padding: const EdgeInsets.only(top: 5), | padding: const EdgeInsets.only(top: 5), | ||||
| child: Text( | child: Text( | ||||
| data?.title_1 ?? '京东', | data?.title_1 ?? '京东', | ||||
| style: TextStyle(color: HexColor.fromHex('#666666'), fontSize: 20.sp), | |||||
| style: TextStyle( | |||||
| color: HexColor.fromHex('#666666'), fontSize: 20.sp), | |||||
| )), | )), | ||||
| // SizedBox(height: 25.h,) | // SizedBox(height: 25.h,) | ||||
| ], | ], | ||||
| @@ -266,8 +300,8 @@ class HomeQuickEntryItem extends StatelessWidget { | |||||
| /// 图片build 优化 | /// 图片build 优化 | ||||
| /// | /// | ||||
| class MyNetWorkImage extends StatelessWidget { | class MyNetWorkImage extends StatelessWidget { | ||||
| final String imgUrl; | final String imgUrl; | ||||
| const MyNetWorkImage(this.imgUrl); | const MyNetWorkImage(this.imgUrl); | ||||
| @override | @override | ||||
| @@ -6,7 +6,6 @@ import 'package:flutter_swiper/flutter_swiper.dart'; | |||||
| import 'package:provider/provider.dart'; | import 'package:provider/provider.dart'; | ||||
| import 'package:zhiying_base_widget/pages/main_page/notifier/main_page_bg_notifier.dart'; | import 'package:zhiying_base_widget/pages/main_page/notifier/main_page_bg_notifier.dart'; | ||||
| import 'package:zhiying_base_widget/pages/team_details_page/team_details_page.dart'; | import 'package:zhiying_base_widget/pages/team_details_page/team_details_page.dart'; | ||||
| import 'package:zhiying_base_widget/pages/team_page/team_page.dart'; | |||||
| import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
| import 'bloc/bloc.dart'; | import 'bloc/bloc.dart'; | ||||
| @@ -49,13 +48,12 @@ class _HomeSlideBannerContainerState extends State<HomeSlideBannerContainer> { | |||||
| void _itemOnClick(IndexCarousel model) { | void _itemOnClick(IndexCarousel model) { | ||||
| print('点击了 $model'); | print('点击了 $model'); | ||||
| // RouterUtil.route(model, model.toJson(), context); | // RouterUtil.route(model, model.toJson(), context); | ||||
| // Navigator.push(context, MaterialPageRoute( | |||||
| // Navigator.push(context, CupertinoPageRoute( | |||||
| // builder: (_) => PageFactory.create('goods_details', null) | // builder: (_) => PageFactory.create('goods_details', null) | ||||
| // )); | // )); | ||||
| // Navigator.push(context, CupertinoPageRoute(builder: (_)=> TeamPage())); | // Navigator.push(context, CupertinoPageRoute(builder: (_)=> TeamPage())); | ||||
| Navigator.push(context, MaterialPageRoute( | |||||
| builder: (_)=> TeamDetailsPage() | |||||
| )); | |||||
| Navigator.push( | |||||
| context, CupertinoPageRoute(builder: (_) => TeamDetailsPage())); | |||||
| } | } | ||||
| @override | @override | ||||
| @@ -90,7 +90,7 @@ class NormalNav extends StatelessWidget { | |||||
| ), | ), | ||||
| onTap: () { | onTap: () { | ||||
| Navigator.push(context, | Navigator.push(context, | ||||
| MaterialPageRoute(builder: (context) { | |||||
| CupertinoPageRoute(builder: (context) { | |||||
| return MinePage(); | return MinePage(); | ||||
| })); | })); | ||||
| }, | }, | ||||
| @@ -1,19 +1,19 @@ | |||||
| import 'dart:convert'; | import 'dart:convert'; | ||||
| import 'dart:ui'; | import 'dart:ui'; | ||||
| import 'package:cached_network_image/cached_network_image.dart'; | |||||
| import 'package:flutter/cupertino.dart'; | import 'package:flutter/cupertino.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | |||||
| import 'package:fluttertoast/fluttertoast.dart'; | |||||
| import 'package:provider/provider.dart'; | |||||
| import 'package:zhiying_base_widget/pages/search_page/notifier/search_tag_notifier.dart'; | import 'package:zhiying_base_widget/pages/search_page/notifier/search_tag_notifier.dart'; | ||||
| import 'package:zhiying_base_widget/pages/search_result_page/search_result_page.dart'; | import 'package:zhiying_base_widget/pages/search_result_page/search_result_page.dart'; | ||||
| import 'package:zhiying_base_widget/pages/search_think_page/bloc/search_think_bloc.dart'; | import 'package:zhiying_base_widget/pages/search_think_page/bloc/search_think_bloc.dart'; | ||||
| import 'package:zhiying_base_widget/pages/search_think_page/search_think_page.dart'; | import 'package:zhiying_base_widget/pages/search_think_page/search_think_page.dart'; | ||||
| import 'package:zhiying_base_widget/widgets/home/home_quick_entry/cached_network_image_util.dart'; | |||||
| import 'package:zhiying_base_widget/widgets/search/input/model/search_input_model.dart'; | import 'package:zhiying_base_widget/widgets/search/input/model/search_input_model.dart'; | ||||
| import 'package:zhiying_base_widget/widgets/search/input/search_input_sk.dart'; | import 'package:zhiying_base_widget/widgets/search/input/search_input_sk.dart'; | ||||
| import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
| import 'package:provider/provider.dart'; | |||||
| import 'package:cached_network_image/cached_network_image.dart'; | |||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | |||||
| import 'package:fluttertoast/fluttertoast.dart'; | |||||
| /// | /// | ||||
| /// 搜索页的搜索框 | /// 搜索页的搜索框 | ||||
| @@ -38,31 +38,38 @@ class _SearchInputWidgetState extends State<SearchInputWidget> { | |||||
| /// 点击搜索按钮 | /// 点击搜索按钮 | ||||
| void _onSearchButtomClick() async { | void _onSearchButtomClick() async { | ||||
| String content = _editingController?.text?.toString()?.trim() ?? ''; | String content = _editingController?.text?.toString()?.trim() ?? ''; | ||||
| /// TODO 保存历史标签 | /// TODO 保存历史标签 | ||||
| if (!EmptyUtil.isEmpty(content)) { | if (!EmptyUtil.isEmpty(content)) { | ||||
| await Provider.of<SearchTagNotifier>(context, listen: false).addTag(content); | |||||
| Navigator.push(context, CupertinoPageRoute(builder: (_) => SearchResultPage({'keywords': content, 'tag': 'search_page'}))); | |||||
| }else{ | |||||
| await Provider.of<SearchTagNotifier>(context, listen: false) | |||||
| .addTag(content); | |||||
| Navigator.push( | |||||
| context, | |||||
| CupertinoPageRoute( | |||||
| builder: (_) => SearchResultPage( | |||||
| {'keywords': content, 'tag': 'search_page'}))); | |||||
| } else { | |||||
| Fluttertoast.showToast(msg: '输入内容不能为空!'); | Fluttertoast.showToast(msg: '输入内容不能为空!'); | ||||
| } | } | ||||
| } | } | ||||
| /// 【弃用】打开搜索联想页面 | /// 【弃用】打开搜索联想页面 | ||||
| void _openSearchThinkPage(){ | |||||
| Navigator.push(context, MaterialPageRoute( | |||||
| builder: (_)=> SearchThinkPage({}) | |||||
| )); | |||||
| void _openSearchThinkPage() { | |||||
| Navigator.push( | |||||
| context, CupertinoPageRoute(builder: (_) => SearchThinkPage({}))); | |||||
| } | } | ||||
| /// 搜索框值改变 | /// 搜索框值改变 | ||||
| void _searchInputChange(String text){ | |||||
| if(!EmptyUtil.isEmpty(text)){ | |||||
| void _searchInputChange(String text) { | |||||
| if (!EmptyUtil.isEmpty(text)) { | |||||
| // 进行网络更新 | // 进行网络更新 | ||||
| print('输入框的内容是 $text'); | print('输入框的内容是 $text'); | ||||
| BlocProvider.of<SearchThinkBloc>(context).add(SearchThinkKeyWrodsChangeEvent(text)); | |||||
| }else{ | |||||
| BlocProvider.of<SearchThinkBloc>(context) | |||||
| .add(SearchThinkKeyWrodsChangeEvent(text)); | |||||
| } else { | |||||
| /// 输入框为空的时候,隐藏联想视图,显示原本的视图 | /// 输入框为空的时候,隐藏联想视图,显示原本的视图 | ||||
| BlocProvider.of<SearchThinkBloc>(context).add(SearchThinkShowBaseViewEvent()); | |||||
| BlocProvider.of<SearchThinkBloc>(context) | |||||
| .add(SearchThinkShowBaseViewEvent()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -103,12 +110,16 @@ class _SearchInputWidgetState extends State<SearchInputWidget> { | |||||
| return Container( | return Container( | ||||
| color: Colors.white, | color: Colors.white, | ||||
| width: double.infinity, | width: double.infinity, | ||||
| margin: EdgeInsets.only(top: MediaQueryData.fromWindow(window).padding.top + 7.5, left: 12.5, right: 12.5), | |||||
| margin: EdgeInsets.only( | |||||
| top: MediaQueryData.fromWindow(window).padding.top + 7.5, | |||||
| left: 12.5, | |||||
| right: 12.5), | |||||
| child: Row( | child: Row( | ||||
| children: <Widget>[ | children: <Widget>[ | ||||
| /// 返回键 | /// 返回键 | ||||
| _getReturnWidget(), | _getReturnWidget(), | ||||
| const SizedBox(width: 8.5), | const SizedBox(width: 8.5), | ||||
| /// 输入框 | /// 输入框 | ||||
| Expanded( | Expanded( | ||||
| child: Container( | child: Container( | ||||
| @@ -143,9 +154,9 @@ class _SearchInputWidgetState extends State<SearchInputWidget> { | |||||
| } | } | ||||
| /// 返回键 | /// 返回键 | ||||
| Widget _getReturnWidget(){ | |||||
| Widget _getReturnWidget() { | |||||
| return GestureDetector( | return GestureDetector( | ||||
| onTap: ()=> Navigator.maybePop(context), | |||||
| onTap: () => Navigator.maybePop(context), | |||||
| child: Container( | child: Container( | ||||
| child: Icon( | child: Icon( | ||||
| Icons.arrow_back_ios, | Icons.arrow_back_ios, | ||||
| @@ -157,7 +168,6 @@ class _SearchInputWidgetState extends State<SearchInputWidget> { | |||||
| ); | ); | ||||
| } | } | ||||
| /// 搜索icon | /// 搜索icon | ||||
| Widget _getSearchIconWidget(SearchInputModel model) { | Widget _getSearchIconWidget(SearchInputModel model) { | ||||
| return Container( | return Container( | ||||
| @@ -176,19 +186,24 @@ class _SearchInputWidgetState extends State<SearchInputWidget> { | |||||
| return Container( | return Container( | ||||
| height: double.infinity, | height: double.infinity, | ||||
| alignment: Alignment.centerLeft, | alignment: Alignment.centerLeft, | ||||
| decoration: BoxDecoration(borderRadius: BorderRadius.circular(30), color: HexColor.fromHex('#F9F9F9')), | |||||
| decoration: BoxDecoration( | |||||
| borderRadius: BorderRadius.circular(30), | |||||
| color: HexColor.fromHex('#F9F9F9')), | |||||
| // padding: const EdgeInsets.symmetric(vertical: 6), | // padding: const EdgeInsets.symmetric(vertical: 6), | ||||
| child: TextField( | child: TextField( | ||||
| showCursor: true, | showCursor: true, | ||||
| // readOnly: true, | // readOnly: true, | ||||
| // onTap: ()=> _openSearchThinkPage(), | // onTap: ()=> _openSearchThinkPage(), | ||||
| onChanged: (val)=> _searchInputChange(val), | |||||
| onChanged: (val) => _searchInputChange(val), | |||||
| cursorWidth: 1, | cursorWidth: 1, | ||||
| onSubmitted: (text) => _onSearchButtomClick(), | onSubmitted: (text) => _onSearchButtomClick(), | ||||
| controller: _editingController, | controller: _editingController, | ||||
| focusNode: _focusNode, | focusNode: _focusNode, | ||||
| cursorColor: Colors.transparent, | cursorColor: Colors.transparent, | ||||
| style: TextStyle(fontSize: 14, color: HexColor.fromHex('#333333'), textBaseline: TextBaseline.alphabetic), | |||||
| style: TextStyle( | |||||
| fontSize: 14, | |||||
| color: HexColor.fromHex('#333333'), | |||||
| textBaseline: TextBaseline.alphabetic), | |||||
| decoration: InputDecoration( | decoration: InputDecoration( | ||||
| filled: true, | filled: true, | ||||
| isDense: true, | isDense: true, | ||||
| @@ -203,7 +218,10 @@ class _SearchInputWidgetState extends State<SearchInputWidget> { | |||||
| disabledBorder: InputBorder.none, | disabledBorder: InputBorder.none, | ||||
| enabledBorder: InputBorder.none, | enabledBorder: InputBorder.none, | ||||
| hintText: model?.search_inpu_hint_text ?? '搜索更多优惠商品', | hintText: model?.search_inpu_hint_text ?? '搜索更多优惠商品', | ||||
| hintStyle: TextStyle(color: HexColor.fromHex('#999999'), fontSize: 14, textBaseline: TextBaseline.alphabetic), | |||||
| hintStyle: TextStyle( | |||||
| color: HexColor.fromHex('#999999'), | |||||
| fontSize: 14, | |||||
| textBaseline: TextBaseline.alphabetic), | |||||
| ), | ), | ||||
| ), | ), | ||||
| ); | ); | ||||
| @@ -217,10 +235,10 @@ class _SearchInputWidgetState extends State<SearchInputWidget> { | |||||
| child: Container( | child: Container( | ||||
| padding: const EdgeInsets.symmetric(horizontal: 17.5, vertical: 6), | padding: const EdgeInsets.symmetric(horizontal: 17.5, vertical: 6), | ||||
| decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
| gradient: LinearGradient( | |||||
| colors: [HexColor.fromHex(model?.search_button_color ?? '#FD5E5E'), HexColor.fromHex(model?.search_button_t ?? '#FF0100')], | |||||
| begin: Alignment.centerLeft, | |||||
| end: Alignment.centerRight), | |||||
| gradient: LinearGradient(colors: [ | |||||
| HexColor.fromHex(model?.search_button_color ?? '#FD5E5E'), | |||||
| HexColor.fromHex(model?.search_button_t ?? '#FF0100') | |||||
| ], begin: Alignment.centerLeft, end: Alignment.centerRight), | |||||
| borderRadius: BorderRadius.circular(30), | borderRadius: BorderRadius.circular(30), | ||||
| ), | ), | ||||
| child: Text( | child: Text( | ||||
| @@ -5,7 +5,7 @@ author: | |||||
| homepage: | homepage: | ||||
| environment: | environment: | ||||
| sdk: ">=2.1.0 <3.0.0" | |||||
| sdk: ">=2.8.0 <3.0.0" | |||||
| dependencies: | dependencies: | ||||
| flutter: | flutter: | ||||