collect_page.dart 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. import 'package:flutter/material.dart';
  2. import 'package:liftmanager/res/gaps.dart';
  3. import 'package:liftmanager/net/api_service.dart';
  4. import 'package:liftmanager/utils/toast.dart';
  5. import 'package:liftmanager/widgets/app_bar.dart';
  6. import 'package:liftmanager/internal/search/search_router.dart';
  7. import 'package:liftmanager/widgets/app_search_bar.dart';
  8. import 'package:liftmanager/res/resources.dart';
  9. import 'package:liftmanager/routers/fluro_navigator.dart';
  10. import 'package:liftmanager/widgets/load_image.dart';
  11. import 'package:liftmanager/internal/bbs/bbs_router.dart';
  12. import 'package:liftmanager/internal/means/means_router.dart';
  13. import 'package:liftmanager/widgets/bbs_content.dart';
  14. import 'package:liftmanager/internal/wode/page/video/my_video.dart';
  15. // import 'package:amap_all_fluttify/amap_all_fluttify.dart';
  16. import 'package:provider/provider.dart';
  17. import 'package:permission_handler/permission_handler.dart';
  18. import 'dart:async';
  19. import 'package:flutter_screenutil/flutter_screenutil.dart';
  20. import 'package:liftmanager/mvp/base_page_state.dart';
  21. import 'package:liftmanager/utils/time_format.dart';
  22. import 'package:liftmanager/internal/search/presenter/base_list_provider.dart';
  23. import 'package:liftmanager/widgets/state_layout.dart';
  24. import 'package:liftmanager/widgets/my_refresh_list.dart';
  25. import 'package:liftmanager/utils/url.dart';
  26. import 'package:flutter_spinkit/flutter_spinkit.dart';
  27. import 'dart:convert';
  28. import 'package:liftmanager/internal/wode/wode_router.dart';
  29. import 'package:liftmanager/utils/fast_notification.dart';
  30. import 'package:liftmanager/internal/bbs/model/mix_model.dart';
  31. import 'package:liftmanager/internal/bbs/presenter/mix_list_presenter.dart';
  32. import 'package:liftmanager/common/common.dart';
  33. import 'package:flustars/flustars.dart' as flustars;
  34. class CollectPage extends StatefulWidget {
  35. String index = "1";
  36. @override
  37. CollectPageState createState() => CollectPageState();
  38. }
  39. class CollectPageState extends BasePageState<CollectPage,MixListPresenter> {
  40. // NewsDetailItem item = NewsDetailItem();
  41. BaseListProvider<Records> provider = BaseListProvider<Records>();
  42. int checkIndex = 0;
  43. int _page = 1;
  44. List<String> titleList = [
  45. // "全部",
  46. "问答",
  47. "视频",
  48. "职位",
  49. "商品",
  50. ];
  51. @override
  52. void initState() {
  53. provider.setStateTypeNotNotify(StateType.loading);
  54. super.initState();
  55. _onRefresh();
  56. FastNotification.addListener("collectAction",(collectInit){
  57. if(mounted){
  58. setState(() {
  59. });
  60. _onRefresh();
  61. }
  62. });
  63. }
  64. @override
  65. void didChangeDependencies() {
  66. super.didChangeDependencies();
  67. print(12366);
  68. }
  69. @override
  70. void deactivate() {
  71. super.deactivate();
  72. print(123667);
  73. }
  74. @override
  75. Widget build(BuildContext context) {
  76. double width = MediaQuery.of(context).size.width;
  77. return Scaffold(
  78. appBar: MyAppBar(
  79. centerTitle: "我的收藏",
  80. ),
  81. body:Container(
  82. child: Stack(
  83. children: <Widget>[
  84. Positioned(
  85. child: Container(
  86. padding: EdgeInsets.only(bottom:5),
  87. // color:Color(0xffFAF7FA),
  88. decoration: BoxDecoration(
  89. border: Border(
  90. bottom: BorderSide(width: 0.5, color: Color(0xffeeeeee)),
  91. ),
  92. // color: Color(0xffffffff),
  93. ),
  94. child:Row(
  95. mainAxisAlignment: MainAxisAlignment.spaceAround,
  96. children:titleList.asMap().keys.map((i){
  97. return TabThis(item:titleList[i],tabIndex:i,checkIndex: checkIndex,fun:(){
  98. provider.list.clear();
  99. setState(() {
  100. checkIndex = i;
  101. });
  102. provider.setStateTypeNotNotify(StateType.loading);
  103. _onRefresh();
  104. print(checkIndex);
  105. });
  106. }).toList()
  107. )
  108. ),
  109. ),
  110. Container(
  111. child: ChangeNotifierProvider<BaseListProvider<Records>>(
  112. create: (_) => provider,
  113. child: Column(
  114. children: <Widget>[
  115. SizedBox(
  116. height:ScreenUtil().setWidth(50)
  117. ),
  118. Expanded(
  119. flex: 1,
  120. child: Consumer<BaseListProvider<Records>>(
  121. builder: (_, provider, __) {
  122. return MyListView(
  123. key: Key('mix_list'),
  124. itemCount: provider.list.length,
  125. stateType: provider.stateType,
  126. onRefresh: _onRefresh,
  127. loadMore: _loadMore,
  128. hasMore: provider.hasMore,
  129. itemBuilder: (_, index) {
  130. return Column(
  131. crossAxisAlignment: CrossAxisAlignment.start,
  132. children: <Widget>[
  133. checkIndex == 0?
  134. GestureDetector(
  135. child: provider.list[index]!=null?Container(
  136. padding: EdgeInsets.only(
  137. left: ScreenUtil().setWidth(15),
  138. right: ScreenUtil().setWidth(15),
  139. top: ScreenUtil().setHeight(10),
  140. bottom: ScreenUtil().setHeight(10)),
  141. decoration: BoxDecoration(
  142. border: Border(
  143. bottom: BorderSide(
  144. width: 0.5, color: Colours.line),
  145. ),
  146. ),
  147. child:
  148. Column(
  149. crossAxisAlignment: CrossAxisAlignment.start,
  150. children: <Widget>[
  151. Text(
  152. "[${provider.list[index].brandName??""}]${provider.list[index].title??""}",
  153. textAlign: TextAlign.left,
  154. style: TextStyle(
  155. fontSize: ScreenUtil().setSp(15)),
  156. maxLines: 1,
  157. overflow: TextOverflow.ellipsis,
  158. ),
  159. Container(
  160. padding: EdgeInsets.only(
  161. top: ScreenUtil().setHeight(10),
  162. bottom: ScreenUtil().setHeight(10)),
  163. child: Row(
  164. children: <Widget>[
  165. ClipRRect(
  166. borderRadius:
  167. BorderRadius.circular(
  168. ScreenUtil()
  169. .setWidth(18)),
  170. child: Container(
  171. child: LoadNetworkImage(
  172. provider.list[index].avatarUrl,
  173. width:
  174. ScreenUtil().setWidth(34),
  175. height:
  176. ScreenUtil().setWidth(34),
  177. ),
  178. )),
  179. Container(
  180. padding: EdgeInsets.only(
  181. left:
  182. ScreenUtil().setWidth(10)),
  183. child: Column(
  184. crossAxisAlignment:
  185. CrossAxisAlignment.start,
  186. children: <Widget>[
  187. Text(
  188. provider.list[index].userName??"",
  189. style: TextStyle(
  190. fontSize: ScreenUtil()
  191. .setSp(14),
  192. color: Color(0xff333333)),
  193. ),
  194. Text(
  195. provider
  196. .list[index]
  197. .createTime!=null?DateUtils.instance
  198. .getFormartData(
  199. timeSamp: provider
  200. .list[index]
  201. .createTime,
  202. format: "yyyy-MM-dd"):"",
  203. style: TextStyle(
  204. fontSize: ScreenUtil()
  205. .setSp(12),
  206. color: Color(0xffaaaaaa)),
  207. ),
  208. ],
  209. ),
  210. )
  211. ],
  212. ),
  213. ),
  214. Text(
  215. provider.list[index].expression??"",
  216. textAlign: TextAlign.left,
  217. style: TextStyle(
  218. color: Color(0xff666666),
  219. fontSize: ScreenUtil().setSp(14),
  220. ),
  221. maxLines: 2,
  222. overflow: TextOverflow.ellipsis,
  223. ),
  224. Container(
  225. padding: EdgeInsets.only(
  226. top: ScreenUtil().setHeight(5),
  227. bottom: ScreenUtil().setHeight(5)),
  228. child: Row(
  229. mainAxisAlignment:
  230. MainAxisAlignment.start,
  231. children: provider.list[index].imgs !=
  232. null &&
  233. provider.list[index].imgs
  234. .isNotEmpty
  235. ? List<Widget>.from(provider
  236. .list[index].imgs
  237. .split(",")
  238. .asMap().keys.map((subindex) {
  239. // print(item);
  240. return Container(
  241. padding:subindex<provider
  242. .list[index].imgs.split(",").length-1?EdgeInsets.only(right:6):EdgeInsets.only(right:0),
  243. // color:Colors.red,
  244. // decoration: BoxDecoration(
  245. // borderRadius: BorderRadius.circular(20.0),
  246. // ),
  247. child: ClipRRect(
  248. borderRadius:
  249. BorderRadius.circular(
  250. 10),
  251. child: LoadNetworkImage(
  252. provider
  253. .list[index].imgs.split(",")[subindex],
  254. // height: width/375*75,
  255. height: ScreenUtil()
  256. .setWidth(80),
  257. width: ScreenUtil()
  258. .setWidth(110),
  259. isWater: true,
  260. ),
  261. ),
  262. );
  263. }).toList())
  264. : <Widget>[]),
  265. ),
  266. Text(
  267. "${provider.list[index].likeNum.toString()}人赞",
  268. textAlign: TextAlign.right,
  269. style: TextStyle(
  270. color: Color(0xff999999),
  271. fontSize: ScreenUtil().setSp(14),
  272. ),
  273. )
  274. ]),
  275. ):Center(child: Text("加载中..."),),
  276. onTap: () {
  277. // print(item);
  278. if(provider.list[index].statuz == 1){
  279. NavigatorUtils.push(context,
  280. "${BbsRouter.questionDetail}?id=${provider.list[index].id.toString()}");
  281. }else {
  282. toasts("已下架");
  283. }
  284. },
  285. ):Container(child:null),
  286. checkIndex == 1?
  287. GestureDetector(
  288. child: provider.list[index]!=null?
  289. Container(
  290. padding: EdgeInsets.only(
  291. left: ScreenUtil().setWidth(15),
  292. // right: ScreenUtil().setWidth(15),
  293. top: ScreenUtil().setHeight(10),
  294. bottom: ScreenUtil().setHeight(10)),
  295. decoration: BoxDecoration(
  296. border: Border(
  297. bottom: BorderSide(
  298. width: 0.5, color: Colours.line),
  299. ),
  300. ),
  301. child:
  302. Row(
  303. crossAxisAlignment: CrossAxisAlignment.start,
  304. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  305. children: <Widget>[
  306. Container(
  307. height: width*0.24,
  308. child: Column(
  309. crossAxisAlignment: CrossAxisAlignment.start,
  310. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  311. children: <Widget>[
  312. Container(
  313. width:width*0.5,
  314. child: Text(
  315. "${provider.list[index].title??""}",
  316. style: TextStyle(
  317. fontWeight: FontWeight.w600,
  318. fontSize: ScreenUtil().setSp(17)),
  319. textAlign: TextAlign.start,
  320. maxLines: 2,
  321. overflow: TextOverflow.ellipsis,
  322. ),
  323. ),
  324. Row(
  325. children: <Widget>[
  326. Container(
  327. width:width*0.18,
  328. child: Text(
  329. "${provider.list[index].brandName??""}",
  330. style: TextStyle(
  331. color: Color(0xff999999),
  332. fontSize: ScreenUtil().setSp(14)),
  333. textAlign: TextAlign.start,
  334. maxLines: 1,
  335. overflow: TextOverflow.ellipsis,
  336. ),
  337. ),
  338. SizedBox(
  339. width:5
  340. ),
  341. Text(
  342. "${provider.list[index].likeNum??"0"}人点赞",
  343. style: TextStyle(
  344. color: Color(0xff999999),
  345. fontSize: ScreenUtil().setSp(14)),
  346. textAlign: TextAlign.start,
  347. ),
  348. ],
  349. )
  350. ]),
  351. ),
  352. Container(
  353. padding: EdgeInsets.only(right:10),
  354. child: Stack(
  355. children: <Widget>[
  356. ClipRRect(
  357. borderRadius:
  358. BorderRadius.circular(1),
  359. child: Container(
  360. child: LoadNetworkImage(
  361. // imgFontUrl +
  362. // provider.list[index].cover,
  363. provider.list[index].cover,
  364. width: width*0.38,
  365. height: width*0.24,
  366. isWater: true,
  367. ),
  368. ),
  369. ),
  370. Positioned(
  371. left: width*0.17,
  372. top: width*0.08,
  373. child: Icon(
  374. IconData(0xe607,
  375. fontFamily: "myfont"),
  376. size: 26.0,
  377. color: Colors.white,
  378. ),
  379. )
  380. ],
  381. )),
  382. ],
  383. )
  384. )
  385. :Center(child:Text("加载中...")),
  386. onTap: () {
  387. if(provider.list[index].statuz == 1){
  388. NavigatorUtils.push(context,
  389. "${BbsRouter.videoDetail}?id=${provider.list[index].id.toString()}");
  390. }else {
  391. toasts("已下架");
  392. }
  393. },
  394. )
  395. :Container(child:null),
  396. checkIndex == 2?
  397. GestureDetector(
  398. child: provider.list[index]!=null?Container(
  399. padding: EdgeInsets.only(
  400. left: ScreenUtil().setWidth(15),
  401. right: ScreenUtil().setWidth(15),
  402. top: ScreenUtil().setHeight(10),
  403. bottom: ScreenUtil().setHeight(10)),
  404. decoration: BoxDecoration(
  405. border: Border(
  406. bottom: BorderSide(
  407. width: 0.5, color: Colours.line),
  408. ),
  409. ),
  410. child: Column(
  411. // crossAxisAlignment: CrossAxisAlignment.start,
  412. children: <Widget>[
  413. Container(
  414. padding: EdgeInsets.only(
  415. bottom: ScreenUtil().setHeight(5)),
  416. child: Row(
  417. mainAxisAlignment:
  418. MainAxisAlignment.spaceBetween,
  419. children: <Widget>[
  420. Container(
  421. width: width*0.4,
  422. child: Text(
  423. provider.list[index].job ?? '',
  424. textAlign: TextAlign.left,
  425. style: TextStyle(
  426. fontSize:
  427. ScreenUtil().setSp(17),
  428. color: Color(0xff333333),
  429. ),
  430. overflow: TextOverflow.ellipsis,
  431. ),
  432. ),
  433. Container(
  434. width:width*0.4,
  435. child:Text(
  436. // 'jiage',
  437. "¥" +
  438. provider
  439. .list[index].lowerSalary
  440. .toString() +
  441. "-" +
  442. provider
  443. .list[index].upperSalary
  444. .toString(),
  445. textAlign: TextAlign.right,
  446. style: TextStyle(
  447. fontSize:
  448. ScreenUtil().setSp(17),
  449. color: Color(0xffff0000),
  450. ),
  451. overflow: TextOverflow.ellipsis,
  452. ),
  453. )
  454. ],
  455. ),
  456. ),
  457. Row(
  458. mainAxisAlignment:
  459. MainAxisAlignment.spaceBetween,
  460. children: <Widget>[
  461. Container(
  462. width: width*0.5,
  463. child: Text(
  464. provider.list[index].companyName!=null ?provider.list[index].companyName:'',
  465. textAlign: TextAlign.left,
  466. overflow: TextOverflow.ellipsis,
  467. style: TextStyle(
  468. fontSize:
  469. ScreenUtil().setSp(14),
  470. color: Color(0xff999999),
  471. ),
  472. ),
  473. ),
  474. provider.list[index]
  475. .provinceName !=
  476. null?Container(
  477. width: width*0.35,
  478. child: Text(
  479. (provider.list[index]
  480. .provinceName !=
  481. null
  482. ? provider
  483. .list[index].provinceName
  484. : '') +
  485. "-" +
  486. (provider.list[index]
  487. .cityName !=
  488. null
  489. ? provider
  490. .list[index].cityName
  491. : ''),
  492. textAlign: TextAlign.right,
  493. overflow: TextOverflow.ellipsis,
  494. style: TextStyle(
  495. fontSize:
  496. ScreenUtil().setSp(14),
  497. color: Color(0xff999999),
  498. ),
  499. ),
  500. ):Container(child:null),
  501. ],
  502. ),
  503. Row(
  504. mainAxisAlignment:
  505. MainAxisAlignment.spaceBetween,
  506. children: <Widget>[
  507. Container(
  508. width: width * 0.65,
  509. child: Text(
  510. provider.list[index].info ?? '',
  511. textAlign: TextAlign.left,
  512. style: TextStyle(
  513. fontSize:
  514. ScreenUtil().setSp(14),
  515. color: Color(0xff999999),
  516. ),
  517. overflow: TextOverflow.ellipsis,
  518. ),
  519. ),
  520. Text(
  521. provider
  522. .list[index].createTime!=null?DateUtils.instance.getFormartData(
  523. timeSamp: provider
  524. .list[index].createTime,
  525. format: "yyyy-MM-dd"):"",
  526. textAlign: TextAlign.left,
  527. style: TextStyle(
  528. fontSize: ScreenUtil().setSp(14),
  529. color: Color(0xff999999),
  530. ),
  531. ),
  532. ],
  533. ),
  534. ]),
  535. ):Center(child: Text("加载中..."),),
  536. onTap: () {
  537. if(provider.list[index].statuz == 1){
  538. NavigatorUtils.push(context,
  539. "${BbsRouter.positionDetail}?id=${provider.list[index].id.toString()}");
  540. }else {
  541. toasts("已下架");
  542. }
  543. },
  544. )
  545. :Container(child:null),
  546. checkIndex == 3?
  547. InkWell(
  548. child: provider.list[index]!=null?Container(
  549. padding: EdgeInsets.only(
  550. left: ScreenUtil().setWidth(15),
  551. right: ScreenUtil().setWidth(15),
  552. top: ScreenUtil().setHeight(10),
  553. bottom: ScreenUtil().setHeight(10)),
  554. decoration: BoxDecoration(
  555. border: Border(
  556. bottom: BorderSide(
  557. width: 0.5, color: Colours.line),
  558. ),
  559. ),
  560. child: Row(
  561. crossAxisAlignment: CrossAxisAlignment.start,
  562. children: <Widget>[
  563. ClipRRect(
  564. borderRadius: BorderRadius.circular(5),
  565. child: Container(
  566. padding: EdgeInsets.only(
  567. right: ScreenUtil().setWidth(10)),
  568. child: LoadNetworkImage(
  569. provider.list[index].imgs.split(",")[0],
  570. width: ScreenUtil().setWidth(90),
  571. height: ScreenUtil().setWidth(90),
  572. isWater: true,
  573. ),
  574. ),
  575. ),
  576. Column(
  577. crossAxisAlignment:
  578. CrossAxisAlignment.start,
  579. children: <Widget>[
  580. Text(
  581. provider.list[index].sname??"",
  582. textAlign: TextAlign.left,
  583. style: TextStyle(
  584. fontSize: ScreenUtil().setSp(15),
  585. color: Color(0xff333333),
  586. ),
  587. ),
  588. Text(
  589. provider.list[index].bname??""
  590. .toString(),
  591. textAlign: TextAlign.left,
  592. style: TextStyle(
  593. fontSize: ScreenUtil().setSp(14),
  594. color: Color(0xff666666),
  595. ),
  596. ),
  597. Text(
  598. "供应商:${provider.list[index].manufacturer}",
  599. textAlign: TextAlign.left,
  600. style: TextStyle(
  601. fontSize: ScreenUtil().setSp(14),
  602. color: Color(0xff666666),
  603. ),
  604. ),
  605. Text(
  606. "Tel:${provider.list[index].telephone}",
  607. textAlign: TextAlign.left,
  608. style: TextStyle(
  609. fontSize: ScreenUtil().setSp(14),
  610. color: Color(0xff666666),
  611. ),
  612. ),
  613. ],
  614. ),
  615. ]),
  616. ):Center(child: Text("加载中..."),),
  617. onTap: () {
  618. print(index);
  619. if(provider.list[index].statuz == 1){
  620. NavigatorUtils.push(context,
  621. "${BbsRouter.productDetail}?id=${provider.list[index].id.toString()}");
  622. }else {
  623. toasts("已下架");
  624. }
  625. },
  626. )
  627. :Container(child:null),
  628. ],
  629. );
  630. },
  631. );
  632. }))
  633. ],
  634. )
  635. ))
  636. ],
  637. )
  638. )
  639. );
  640. }
  641. Future _onRefresh() async {
  642. _page = 1;
  643. if(checkIndex==0){
  644. await presenter.getQuestionList(_page);
  645. }
  646. else if(checkIndex==1){
  647. await presenter.getVideoList(_page);
  648. }
  649. else if(checkIndex==2){
  650. await presenter.getPositionList(_page);
  651. }
  652. else if(checkIndex==3){
  653. await presenter.getShopList(_page);
  654. }
  655. }
  656. Future _loadMore() async {
  657. _page++;
  658. if(checkIndex==0){
  659. await presenter.getQuestionList(_page);
  660. }else if(checkIndex==1){
  661. await presenter.getVideoList(_page);
  662. }
  663. else if(checkIndex==2){
  664. await presenter.getPositionList(_page);
  665. }
  666. else if(checkIndex==3){
  667. await presenter.getShopList(_page);
  668. }
  669. }
  670. @override
  671. MixListPresenter createPresenter() {
  672. return MixListPresenter();
  673. }
  674. }
  675. class TabThis extends StatelessWidget {
  676. TabThis({Key key,this.item,this.tabIndex,this.fun,this.checkIndex}) : super(key: key);
  677. String item;
  678. int tabIndex;
  679. int checkIndex;
  680. Function fun;
  681. @override
  682. Widget build(BuildContext context) {
  683. return Container(
  684. padding: EdgeInsets.only(top:ScreenUtil().setWidth(10)),
  685. child: Container(
  686. child:Row(
  687. mainAxisAlignment: MainAxisAlignment.center,
  688. children:<Widget>[
  689. GestureDetector(
  690. onTap: (){
  691. fun();
  692. },
  693. child: Container(
  694. padding: EdgeInsets.only(bottom:6),
  695. decoration: BoxDecoration(
  696. border: Border(
  697. bottom: BorderSide(width: 2, color: checkIndex==tabIndex? Color(0xff02A0FD):Colors.transparent),
  698. ),
  699. // color: Color(0xff9FD1FE),
  700. ),
  701. child:Text(
  702. item,
  703. style: TextStyle(
  704. color:checkIndex==tabIndex? Color(0xff02A0FD):Color(0xff666666),
  705. fontSize:ScreenUtil().setSp(14)
  706. ),
  707. textAlign:TextAlign.center,
  708. ),
  709. )
  710. )
  711. ]
  712. )
  713. ),
  714. );
  715. }
  716. }