diff --git a/lib/store/store_order.dart b/lib/store/store_order.dart index 388d8120..4858be50 100644 --- a/lib/store/store_order.dart +++ b/lib/store/store_order.dart @@ -9,8 +9,9 @@ import 'package:huixiang/retrofit/data/activity.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/store_info.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; +import 'package:huixiang/store/store_view/store_activity.dart'; import 'package:huixiang/store/store_view/store_info.dart'; -import 'package:huixiang/store/store_view/store_order_page.dart'; +import 'package:huixiang/store/store_view/store_order_list.dart'; import 'package:huixiang/union/union_view/union_coupon.dart'; import 'package:huixiang/union/union_view/vip.dart'; import 'package:huixiang/utils/font_weight.dart'; @@ -40,11 +41,24 @@ class _StoreOrderPage extends State ApiService apiService; StoreInfo storeInfo; RefreshController refreshController; - + List _widgetOptions; @override void initState() { super.initState(); + if (tabcontroller == null) + tabcontroller = TabController( + length: 2, + vsync: this, + ); + + _widgetOptions = [ + StoreOrderListPage(widget.arguments, widget.activitys, + storeInfo, controller), + ///星店活动, + StoreActivity(widget.arguments, widget.activitys,), + ]; + queryStoreInfo(); } @@ -78,7 +92,11 @@ class _StoreOrderPage extends State Widget build(BuildContext context) { return Stack( children: [ - Expanded( + Positioned( + left: 0, + right: 0, + top: 0, + bottom: 54.h, child: DefaultTabController( length: 2, child: SmartRefresher( @@ -94,10 +112,12 @@ class _StoreOrderPage extends State child: NestedScrollView( controller: controller, dragStartBehavior: DragStartBehavior.start, - headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { + headerSliverBuilder: + (BuildContext context, bool innerBoxIsScrolled) { return [ SliverOverlapAbsorber( - handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context), + handle: NestedScrollView.sliverOverlapAbsorberHandleFor( + context), sliver: SliverAppBar( title: Text( widget.storeInfo != null @@ -202,10 +222,7 @@ class _StoreOrderPage extends State padding: EdgeInsets.symmetric(horizontal: 10.w), width: MediaQuery.of(context).size.width, child: TabBar( - controller: tabcontroller = TabController( - length: 2, - vsync: this, - ), + controller: tabcontroller, automaticIndicatorColorAdjustment: true, isScrollable: true, indicatorWeight: 1, @@ -236,13 +253,7 @@ class _StoreOrderPage extends State }, body: TabBarView( physics: BouncingScrollPhysics(), - children: [ - StoreOrderListPage(widget.arguments, widget.activitys, storeInfo, controller), - Container( - color: Colors.black, - width: MediaQuery.of(context).size.width, - ), - ], + children: _widgetOptions, controller: tabcontroller, ), ), @@ -293,6 +304,7 @@ class _StoreOrderPage extends State textColor: Colors.white, fontWeight: MyFontWeight.regular, backgroup: Color(0xFF32A060), + radius: 0, fontSize: 16.sp, padding: EdgeInsets.symmetric(vertical: 5.h), ), @@ -305,11 +317,11 @@ class _StoreOrderPage extends State InkWell( onTap: () { setState(() { - // showShoppingCart(); + showShoppingCart(); }); }, child: Image.asset( - "assets/image/icon_shop.png", + "assets/image/shopp.png", width: 88, height: 88, fit: BoxFit.fitWidth, @@ -327,7 +339,6 @@ class _StoreOrderPage extends State backgroup: Color(0xFF32A060), fontSize: 12.sp, radius: 100, - // padding: EdgeInsets.symmetric(vertical: 5.h), ), ) ], @@ -339,6 +350,275 @@ class _StoreOrderPage extends State ); } + ///购物车弹窗 + showShoppingCart() { + showModalBottomSheet( + context: context, + backgroundColor: Colors.transparent, + builder: (context) { + return StatefulBuilder(builder: (context1, state) { + return Container( + alignment: Alignment.topCenter, + width: double.infinity, + height: MediaQuery.of(context).size.height / 2, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(8), + topRight: Radius.circular(8), + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: EdgeInsets.only( + top: 16, + left: 16, + right: 16, + bottom: 8, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "已选商品", + style: TextStyle( + color: Colors.black, + fontSize: 14.sp, + fontWeight: MyFontWeight.medium, + ), + ), + InkWell( + onTap: () {}, + child: Image.asset( + "assets/image/delete.png", + width: 22, + height: 22, + ), + ), + ], + ), + ), + Expanded( + child: Container( + padding: EdgeInsets.only( + top: 8, + left: 16, + right: 16, + ), + child: ListView.builder( + itemCount: 2, + physics: BouncingScrollPhysics(), + itemBuilder: (context, position) { + return shoppGoodsItem(); + }, + ), + ), + ), + Stack( + alignment: Alignment.bottomLeft, + children: [ + Container( + height: 54.h, + decoration: BoxDecoration( + color: Color(0xFFFAFAFA), + boxShadow: [ + BoxShadow( + color: Colors.black.withAlpha(8), + offset: Offset(0, -1), + blurRadius: 3, + spreadRadius: 0, + ), + ], + ), + child: Row( + children: [ + Spacer(), + Text( + S.of(context).heji, + style: TextStyle( + fontSize: 12.sp, + fontWeight: MyFontWeight.regular, + color: Colors.black, + ), + ), + Text( + "¥19.00", + style: TextStyle( + fontSize: 20.sp, + fontWeight: MyFontWeight.medium, + color: Color(0xFF32A060), + ), + ), + Spacer(), + RoundButton( + width: 103.w, + height: 54.h, + text: S.current.jiesuan, + textColor: Colors.white, + fontWeight: MyFontWeight.regular, + backgroup: Color(0xFF32A060), + radius: 0, + fontSize: 16.sp, + padding: EdgeInsets.symmetric(vertical: 5.h), + ) + ], + ), + ), + Stack( + children: [ + InkWell( + onTap: () { + Navigator.of(context).pop(); + }, + child: Image.asset( + "assets/image/shopp.png", + width: 88, + height: 88, + ), + ), + Positioned( + right: 15, + top: 14, + child: RoundButton( + width: 17, + height: 17, + text: "1", + textColor: Colors.white, + fontWeight: MyFontWeight.regular, + backgroup: Color(0xFF32A060), + fontSize: 12.sp, + radius: 100, + ), + ), + ], + ), + ], + ), + ], + ), + ); + }); + }, + ); + } + + Widget shoppGoodsItem() { + return Container( + padding: EdgeInsets.only(bottom: 10), + child: Row( + children: [ + Image.asset( + "assets/image/default_1.png", + width: 60, + height: 60, + fit: BoxFit.cover, + ), + SizedBox(width: 10), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "手工啵啵奶茶", + style: TextStyle( + color: Colors.black, + fontSize: 12.sp, + fontWeight: MyFontWeight.medium, + ), + ), + SizedBox(height: 2), + Row( + children: [ + Text( + "无香精", + style: TextStyle( + color: Color(0xFF4C4C4C), + fontSize: 11.sp, + fontWeight: MyFontWeight.regular, + ), + ), + SizedBox(width: 10), + Text( + "无香精", + style: TextStyle( + color: Color(0xFF4C4C4C), + fontSize: 11.sp, + fontWeight: MyFontWeight.regular, + ), + ) + ], + ), + SizedBox(height: 6), + Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text( + "会员价", + style: TextStyle( + color: Color(0xFFFF7A1A), + fontSize: 13.sp, + fontWeight: MyFontWeight.medium, + ), + ), + Text( + "¥19.00", + style: TextStyle( + color: Color(0xFFFF7A1A), + fontSize: 14.sp, + fontWeight: MyFontWeight.medium, + ), + ) + ], + ), + ], + ), + Spacer(), + InkWell( + onTap: () {}, + child: Image.asset( + "assets/image/reduce.png", + width: 22, + height: 22, + ), + ), + Padding( + padding: EdgeInsets.only(left: 8, right: 8), + child: Text( + "1", + style: TextStyle( + color: Colors.black, + fontSize: 14.sp, + fontWeight: MyFontWeight.medium, + ), + ), + ), + InkWell( + onTap: () {}, + child: Image.asset( + "assets/image/add.png", + width: 22, + height: 22, + ), + ), + ], + ), + ], + ), + flex: 1, + ), + ], + ), + ); + } + // @override // bool get wantKeepAlive => true; } diff --git a/lib/store/store_view/settlement.dart b/lib/store/store_view/settlement.dart index 611230ee..573262e8 100644 --- a/lib/store/store_view/settlement.dart +++ b/lib/store/store_view/settlement.dart @@ -3,7 +3,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/order/order_view/order_commodity.dart'; -import 'package:huixiang/order/order_view/order_info.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/order_info.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; diff --git a/lib/store/store_view/store_activity.dart b/lib/store/store_view/store_activity.dart new file mode 100644 index 00000000..ac200a78 --- /dev/null +++ b/lib/store/store_view/store_activity.dart @@ -0,0 +1,160 @@ + + + +import 'package:flutter/material.dart'; +import 'package:flutter_swiper/flutter_swiper.dart'; +import 'package:huixiang/retrofit/data/activity.dart'; +import 'package:huixiang/utils/font_weight.dart'; +import 'package:huixiang/view_widget/custom_image.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +class StoreActivity extends StatefulWidget { + + final Map arguments; + final List activitys; + + StoreActivity(this.arguments, this.activitys); + + @override + State createState() { + return _StoreActivity(); + } + +} + +class _StoreActivity extends State { + @override + Widget build(BuildContext context) { + return Container( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + color: Colors.white, + child: Swiper( + viewportFraction: 0.95, + loop: false, + itemBuilder: (context, position) { + return InkWell( + onTap: () { + if (widget.arguments["source"] != null && + widget.arguments["source"] == widget.activitys[position].id) { + Navigator.of(context).pop(); + } else { + Navigator.of(context).pushNamed('/router/web_page', arguments: { + "activityId": widget.activitys[position].id, + "source": widget.arguments["id"] + }); + } + }, + child: Container( + margin: EdgeInsets.symmetric(horizontal: 5.w), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + boxShadow: [ + BoxShadow( + color: Color(0x0D000000), + offset: Offset(0, 3), + blurRadius: 14, + spreadRadius: 0, + ), + ], + ), + child: Stack( + children: [ + Container( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + MImage( + (widget.activitys != null && + widget.activitys.length > position) + ? widget.activitys[position].coverImg + : "", + aspectRatio: 2.2, + radius: BorderRadius.vertical( + top: Radius.circular(8), + ), + fit: BoxFit.cover, + errorSrc: "assets/image/default_2_1.png", + fadeSrc: "assets/image/default_2_1.png", + ), + Container( + padding: EdgeInsets.all(8), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + (widget.activitys != null && + widget.activitys.length > position) + ? widget.activitys[position].storeName + : "", + style: TextStyle( + fontSize: 14.sp, + fontWeight: MyFontWeight.semi_bold, + color: Color(0xFF000000), + ), + ), + SizedBox( + height: 4.h, + ), + Text( + (widget.activitys != null && + widget.activitys.length > position) + ? widget.activitys[position].mainTitle + : "", + style: TextStyle( + fontSize: 12.sp, + fontWeight: MyFontWeight.semi_bold, + color: Color(0xFF727272), + ), + ), + ], + ), + ), + ], + ), + ), + Positioned( + top: 0, + right: 0, + child: Container( + padding: EdgeInsets.symmetric( + vertical: 4.h, + horizontal: 8.w, + ), + decoration: BoxDecoration( + color: Colors.black.withAlpha(76), + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(8), + topRight: Radius.circular(8), + ), + ), + child: Text( + (widget.activitys != null && + widget.activitys.length > position) + ? widget.activitys[position].startTime.split(" ")[0] + : "", + style: TextStyle( + fontWeight: MyFontWeight.semi_bold, + fontSize: 12.sp, + color: Color(0xD9FFFFFF), + ), + ), + ), + ), + ], + ), + ), + ); + }, + itemCount: (widget.activitys != null && widget.activitys.length > 0) + ? widget.activitys.length + : 0, + ), + ); + } + +} \ No newline at end of file diff --git a/lib/store/store_view/store_order_page.dart b/lib/store/store_view/store_order_list.dart similarity index 54% rename from lib/store/store_view/store_order_page.dart rename to lib/store/store_view/store_order_list.dart index d6c27bae..6f5e134d 100644 --- a/lib/store/store_view/store_order_page.dart +++ b/lib/store/store_view/store_order_list.dart @@ -66,6 +66,7 @@ class _StoreOrderListPage extends State { height: MediaQuery.of(context).size.height, child: ListView.builder( itemCount: 28, + padding: EdgeInsets.only(top: 25, bottom: 50), controller: widget.controller, itemBuilder: (context, position) { return orderItem(position); @@ -130,8 +131,6 @@ class _StoreOrderListPage extends State { color: Colors.white, padding: EdgeInsets.only(right: 16.w, bottom: 10, top: 10), child: Row( - // mainAxisAlignment: MainAxisAlignment.spaceAround, - // crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(width: 12.w), Image.asset( @@ -198,7 +197,7 @@ class _StoreOrderListPage extends State { fontSize: 11.sp, fontWeight: MyFontWeight.medium, ), - ) + ), ], ), Row( @@ -219,7 +218,7 @@ class _StoreOrderListPage extends State { fontSize: 10.sp, fontWeight: MyFontWeight.regular, ), - ) + ), ], ), ], @@ -228,9 +227,7 @@ class _StoreOrderListPage extends State { true ? GestureDetector( onTap: () { - setState(() { - showStoreSelector(); - }); + showStoreSelector(); }, child: RoundButton( width: 49.w, @@ -282,137 +279,6 @@ class _StoreOrderListPage extends State { ); } - ///星店活动 - Widget starGoodsItem() { - return Container( - child: Swiper( - viewportFraction: 0.95, - loop: false, - itemBuilder: (context, position) { - return InkWell( - onTap: () { - if (widget.arguments["source"] != null && - widget.arguments["source"] == widget.activitys[position].id) { - Navigator.of(context).pop(); - } else { - Navigator.of(context).pushNamed('/router/web_page', arguments: { - "activityId": widget.activitys[position].id, - "source": widget.arguments["id"] - }); - } - }, - child: Container( - margin: EdgeInsets.symmetric(horizontal: 5.w), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(8), - boxShadow: [ - BoxShadow( - color: Color(0x0D000000), - offset: Offset(0, 3), - blurRadius: 14, - spreadRadius: 0, - ) - ], - ), - child: Stack( - children: [ - Container( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - children: [ - MImage( - (widget.activitys != null && - widget.activitys.length > position) - ? widget.activitys[position].coverImg - : "", - aspectRatio: 2.2, - radius: BorderRadius.vertical( - top: Radius.circular(8), - ), - fit: BoxFit.cover, - errorSrc: "assets/image/default_2_1.png", - fadeSrc: "assets/image/default_2_1.png", - ), - Container( - padding: EdgeInsets.all(8), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - (widget.activitys != null && - widget.activitys.length > position) - ? widget.activitys[position].storeName - : "", - style: TextStyle( - fontSize: 14.sp, - fontWeight: MyFontWeight.semi_bold, - color: Color(0xFF000000), - ), - ), - SizedBox( - height: 4.h, - ), - Text( - (widget.activitys != null && - widget.activitys.length > position) - ? widget.activitys[position].mainTitle - : "", - style: TextStyle( - fontSize: 12.sp, - fontWeight: MyFontWeight.semi_bold, - color: Color(0xFF727272), - ), - ), - ], - ), - ), - ], - ), - ), - Positioned( - top: 0, - right: 0, - child: Container( - padding: EdgeInsets.symmetric( - vertical: 4.h, - horizontal: 8.w, - ), - decoration: BoxDecoration( - color: Colors.black.withAlpha(76), - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular(8), - topRight: Radius.circular(8), - ), - ), - child: Text( - (widget.activitys != null && - widget.activitys.length > position) - ? widget.activitys[position].startTime.split(" ")[0] - : "", - style: TextStyle( - fontWeight: MyFontWeight.semi_bold, - fontSize: 12.sp, - color: Color(0xD9FFFFFF), - ), - ), - ), - ), - ], - ), - ), - ); - }, - itemCount: (widget.activitys != null && widget.activitys.length > 0) - ? widget.activitys.length - : 0, - ), - ); - } - ///选规格弹窗 showStoreSelector() { showModalBottomSheet( @@ -666,262 +532,4 @@ class _StoreOrderListPage extends State { ); } - ///购物车弹窗 - showShoppingCart() { - showModalBottomSheet( - context: context, - backgroundColor: Colors.transparent, - builder: (context) { - return StatefulBuilder(builder: (context1, state) { - return Container( - alignment: Alignment.topCenter, - width: double.infinity, - decoration: BoxDecoration( - color: Color(0xFFFAFAFA), - borderRadius: BorderRadius.only( - topLeft: Radius.circular(8), topRight: Radius.circular(8)), - ), - child: Stack( - children: [ - Container( - padding: EdgeInsets.only(top: 16, left: 16, right: 16), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "已选商品", - style: TextStyle( - color: Colors.black, - fontSize: 14.sp, - fontWeight: MyFontWeight.medium, - ), - ), - InkWell( - onTap: () {}, - child: Image.asset( - "assets/image/delete.png", - width: 22, - height: 22, - ), - ), - ], - ), - SizedBox(height: 24.h), - Expanded( - child: Container( - child: ListView.builder( - itemCount: 10, - shrinkWrap: true, - // physics:NeverScrollableScrollPhysics(), - itemBuilder: (context, position) { - return shoppGoodsItem(); - }), - ), - ) - ], - ), - ), - Positioned( - bottom: 0, - left: 0, - right: 0, - child: Stack( - alignment: Alignment.bottomLeft, - children: [ - Container( - height: 54.h, - color: Color(0xFFFAFAFA), - child: Row( - // mainAxisAlignment: MainAxisAlignment.end, - // crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Spacer(), - Text( - S.of(context).heji, - style: TextStyle( - fontSize: 12.sp, - fontWeight: MyFontWeight.regular, - color: Colors.black, - ), - ), - Text( - "¥19.00", - style: TextStyle( - fontSize: 20.sp, - fontWeight: MyFontWeight.medium, - color: Color(0xFF32A060), - ), - ), - Spacer(), - RoundButton( - width: 103.w, - height: 54.h, - text: S.current.jiesuan, - textColor: Colors.white, - fontWeight: MyFontWeight.regular, - backgroup: Color(0xFF32A060), - fontSize: 16.sp, - padding: EdgeInsets.symmetric(vertical: 5.h), - ) - ], - ), - ), - Stack( - children: [ - InkWell( - onTap: () { - setState(() { - Navigator.of(context).pop(); - }); - }, - child: Image.asset( - "assets/image/shop.png", - width: 88, - height: 88, - ), - ), - Positioned( - right: 15, - top: 14, - child: RoundButton( - width: 17, - height: 17, - text: "1", - textColor: Colors.white, - fontWeight: MyFontWeight.regular, - backgroup: Color(0xFF32A060), - fontSize: 12.sp, - radius: 100, - // padding: EdgeInsets.symmetric(vertical: 5.h), - ), - ) - ], - ), - ], - ), - ) - ], - ), - ); - }); - }, - ); - } - - Widget shoppGoodsItem() { - return Container( - padding: EdgeInsets.only(bottom: 10), - child: Row( - children: [ - Image.asset( - "assets/image/default_1.png", - width: 60, - height: 60, - fit: BoxFit.cover, - ), - SizedBox(width: 10), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "手工啵啵奶茶", - style: TextStyle( - color: Colors.black, - fontSize: 12.sp, - fontWeight: MyFontWeight.medium, - ), - ), - SizedBox(height: 2), - Row( - children: [ - Text( - "无香精", - style: TextStyle( - color: Color(0xFF4C4C4C), - fontSize: 11.sp, - fontWeight: MyFontWeight.regular, - ), - ), - SizedBox(width: 10), - Text( - "无香精", - style: TextStyle( - color: Color(0xFF4C4C4C), - fontSize: 11.sp, - fontWeight: MyFontWeight.regular, - ), - ) - ], - ), - SizedBox(height: 6), - Row( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Text( - "会员价", - style: TextStyle( - color: Color(0xFFFF7A1A), - fontSize: 13.sp, - fontWeight: MyFontWeight.medium, - ), - ), - Text( - "¥19.00", - style: TextStyle( - color: Color(0xFFFF7A1A), - fontSize: 14.sp, - fontWeight: MyFontWeight.medium, - ), - ) - ], - ), - ], - ), - Spacer(), - InkWell( - onTap: () {}, - child: Image.asset( - "assets/image/reduce.png", - width: 22, - height: 22, - ), - ), - Padding( - padding: EdgeInsets.only(left: 8, right: 8), - child: Text( - "1", - style: TextStyle( - color: Colors.black, - fontSize: 14.sp, - fontWeight: MyFontWeight.medium, - ), - ), - ), - InkWell( - onTap: () {}, - child: Image.asset( - "assets/image/add.png", - width: 22, - height: 22, - ), - ), - ], - ), - ], - ), - ) - ], - ), - ); - } } diff --git a/lib/web/web_view/web_header.dart b/lib/web/web_view/web_header.dart index aa7a5807..a4e355de 100644 --- a/lib/web/web_view/web_header.dart +++ b/lib/web/web_view/web_header.dart @@ -23,7 +23,7 @@ class _WebHeader extends State { return Column( children: [ Container( - color: Color(0xFFFFFFFF), + color: Colors.white, padding: EdgeInsets.all(12), alignment: Alignment.centerLeft, child: Text( @@ -40,7 +40,7 @@ class _WebHeader extends State { ), ), Container( - color: Color(0xFFFFFFFF), + color: Colors.white, padding: EdgeInsets.symmetric(horizontal: 12.w), child: Row( children: [