@@ -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: | ||||