rewards_detail_page.dart 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
  1. import 'package:cpt_rewards/modules/rewards_confirm/rewards_confirm_page.dart';
  2. import 'package:cs_resources/theme/app_colors_theme.dart';
  3. import 'package:flutter/cupertino.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:auto_route/auto_route.dart';
  6. import 'package:hooks_riverpod/hooks_riverpod.dart';
  7. import 'package:router/ext/auto_router_extensions.dart';
  8. import 'package:shared/utils/log_utils.dart';
  9. import 'package:shared/utils/color_utils.dart';
  10. import 'package:widgets/ext/ex_widget.dart';
  11. import 'package:widgets/my_appbar.dart';
  12. import 'package:widgets/my_load_image.dart';
  13. import 'package:widgets/my_text_view.dart';
  14. import 'package:widgets/shatter/picker_container.dart';
  15. import 'package:widgets/widget_export.dart';
  16. import 'package:cs_resources/generated/assets.dart';
  17. import '../../../router/page/rewards_page_router.dart';
  18. import './rewards_detail_vm.dart';
  19. @RoutePage()
  20. class RewardsDetailPage extends HookConsumerWidget {
  21. const RewardsDetailPage({Key? key}) : super(key: key);
  22. //启动当前页面
  23. static void startInstance({BuildContext? context}) {
  24. if (context != null) {
  25. context.router.push(const RewardsDetailPageRoute());
  26. } else {
  27. appRouter.push(const RewardsDetailPageRoute());
  28. }
  29. }
  30. // listitem
  31. Widget _buildSaleItem(BuildContext context, WidgetRef ref, _vm) {
  32. return Column(
  33. children: [
  34. Container(
  35. decoration: const BoxDecoration(
  36. color: Colors.white,
  37. borderRadius: BorderRadius.all(Radius.circular(6.0)),
  38. boxShadow: [
  39. BoxShadow(
  40. color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
  41. ],
  42. ),
  43. width: MediaQuery.of(context).size.width - 30,
  44. // height: 420,
  45. // margin: const EdgeInsets.only(left: 15, right: 15, top: 12.5),
  46. child: Column(
  47. children: [
  48. const MyAssetImage(
  49. Assets.rewardsRewardsIndex1,
  50. // width: 110,
  51. height: 150,
  52. ),
  53. Column(
  54. crossAxisAlignment: CrossAxisAlignment.start,
  55. mainAxisAlignment: MainAxisAlignment.start,
  56. children: [
  57. const Text(
  58. maxLines: 1, // 设置最大行数为2
  59. overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
  60. 'Cute children multifunctional ……',
  61. style: TextStyle(
  62. fontSize: 16.0,
  63. color: Colors.black,
  64. fontWeight: FontWeight.w500),
  65. ),
  66. Text(
  67. maxLines: 1, // 设置最大行数为2
  68. overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
  69. 'Hong Ye Group Co., Ltd',
  70. style: TextStyle(
  71. fontSize: 13.0,
  72. color: ColorUtils.string2Color('#808DAF'),
  73. fontWeight: FontWeight.w400),
  74. ).marginOnly(bottom: 5),
  75. Row(
  76. children: [
  77. const Text(
  78. '300',
  79. style: TextStyle(
  80. fontSize: 19.0,
  81. color: Colors.black,
  82. fontWeight: FontWeight.w500),
  83. ),
  84. Text(
  85. '350',
  86. style: TextStyle(
  87. decoration: TextDecoration.lineThrough,
  88. decorationColor:
  89. ColorUtils.string2Color('#808DAF'),
  90. decorationStyle: TextDecorationStyle.solid,
  91. fontSize: 12.0,
  92. color: ColorUtils.string2Color('#808DAF'),
  93. fontWeight: FontWeight.w400),
  94. ).marginOnly(left: 5, right: 5),
  95. const Text(
  96. 'Points',
  97. style: TextStyle(
  98. fontSize: 13.0,
  99. color: Colors.black,
  100. fontWeight: FontWeight.w400),
  101. ),
  102. ],
  103. ),
  104. Text(
  105. 'Cute children multifunctional umbrella, at a favorable price and versatile, is a must-have product for home travel, easy to carry and easy to use',
  106. style: TextStyle(
  107. fontSize: 13.0,
  108. color: ColorUtils.string2Color('#808DAF'),
  109. fontWeight: FontWeight.w400),
  110. ).marginOnly(bottom: 10, top: 10),
  111. Container(
  112. height: 28,
  113. decoration: BoxDecoration(
  114. color: ColorUtils.string2Color('#F2F3F6'),
  115. borderRadius:
  116. const BorderRadius.all(Radius.circular(6.0)),
  117. ),
  118. child: Row(
  119. mainAxisSize: MainAxisSize.min,
  120. mainAxisAlignment: MainAxisAlignment.start,
  121. crossAxisAlignment: CrossAxisAlignment.center,
  122. children: [
  123. const MyAssetImage(
  124. Assets.rewardsRewardsDetailDay,
  125. width: 25,
  126. height: 25,
  127. ).marginOnly(right: 5),
  128. Text(
  129. maxLines: 1, // 设置最大行数为2
  130. overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
  131. 'Redeem. From today until 15 Apr 2021',
  132. style: TextStyle(
  133. fontSize: 14.0,
  134. color: ColorUtils.string2Color('#808DAF'),
  135. fontWeight: FontWeight.w400),
  136. )
  137. ],
  138. ).paddingOnly(left: 7, right: 12)),
  139. Container(
  140. height: 28,
  141. decoration: BoxDecoration(
  142. color: ColorUtils.string2Color('#F2F3F6'),
  143. borderRadius:
  144. const BorderRadius.all(Radius.circular(6.0)),
  145. ),
  146. child: Row(
  147. mainAxisSize: MainAxisSize.min,
  148. mainAxisAlignment: MainAxisAlignment.start,
  149. crossAxisAlignment: CrossAxisAlignment.center,
  150. children: [
  151. const MyAssetImage(
  152. Assets.rewardsRewardsDetailRequired,
  153. width: 25,
  154. height: 25,
  155. ).marginOnly(right: 5),
  156. Text(
  157. maxLines: 1, // 设置最大行数为2
  158. overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
  159. 'No Reservation Required',
  160. style: TextStyle(
  161. fontSize: 14.0,
  162. color: ColorUtils.string2Color('#808DAF'),
  163. fontWeight: FontWeight.w400),
  164. )
  165. ],
  166. ).paddingOnly(left: 7, right: 12))
  167. .marginOnly(top: 8, bottom: 25)
  168. ],
  169. ).paddingOnly(left: 15, right: 15, top: 10),
  170. ],
  171. )),
  172. ],
  173. ).marginOnly(left: 15, bottom: 15, right: 15);
  174. }
  175. Widget _buildDeal(BuildContext context, WidgetRef ref, _vm) {
  176. return Column(
  177. children: [
  178. Container(
  179. decoration: const BoxDecoration(
  180. color: Colors.white,
  181. borderRadius: BorderRadius.all(Radius.circular(6.0)),
  182. boxShadow: [
  183. BoxShadow(
  184. color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
  185. ],
  186. ),
  187. width: MediaQuery.of(context).size.width - 30,
  188. child: Column(
  189. crossAxisAlignment: CrossAxisAlignment.start,
  190. children: [
  191. Row(
  192. mainAxisSize: MainAxisSize.min,
  193. mainAxisAlignment: MainAxisAlignment.start,
  194. crossAxisAlignment: CrossAxisAlignment.center,
  195. children: [
  196. const MyAssetImage(
  197. Assets.rewardsRewardsDetailDeal,
  198. width: 25,
  199. height: 25,
  200. ).marginOnly(right: 10),
  201. Text(
  202. 'Redeem Deal At',
  203. style: TextStyle(
  204. fontSize: 15.0,
  205. color: ColorUtils.string2Color('#000000'),
  206. fontWeight: FontWeight.w500),
  207. )
  208. ],
  209. ),
  210. Container(
  211. height: 77,
  212. decoration: BoxDecoration(
  213. color: ColorUtils.string2Color('#F2F3F6'),
  214. borderRadius:
  215. const BorderRadius.all(Radius.circular(6.0)),
  216. ),
  217. child: Row(
  218. mainAxisSize: MainAxisSize.max,
  219. mainAxisAlignment: MainAxisAlignment.start,
  220. crossAxisAlignment: CrossAxisAlignment.center,
  221. children: [
  222. const MyAssetImage(
  223. Assets.rewardsRewardsIndex1,
  224. width: 60,
  225. height: 60,
  226. ).marginOnly(right: 15),
  227. Column(
  228. crossAxisAlignment: CrossAxisAlignment.start,
  229. children: [
  230. Text(
  231. maxLines: 1, // 设置最大行数为2
  232. overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
  233. 'Delibowl Group',
  234. style: TextStyle(
  235. fontSize: 15.0,
  236. color: ColorUtils.string2Color('#54638C'),
  237. fontWeight: FontWeight.w500),
  238. ).marginOnly(bottom: 8),
  239. Text(
  240. maxLines: 1, // 设置最大行数为2
  241. overflow: TextOverflow.ellipsis, // 超出部分用省略号表示
  242. '#01-136, SingPost Center, 408600',
  243. style: TextStyle(
  244. fontSize: 14.0,
  245. color: ColorUtils.string2Color('#54638C'),
  246. fontWeight: FontWeight.w400),
  247. )
  248. ],
  249. ).paddingOnly(
  250. top: 5,
  251. )
  252. ],
  253. ).paddingOnly(left: 12, right: 12, bottom: 9, top: 9))
  254. .marginOnly(top: 12, bottom: 12),
  255. Row(
  256. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  257. crossAxisAlignment: CrossAxisAlignment.center,
  258. children: [
  259. Text(
  260. 'Also redeemable in 1 more location',
  261. style: TextStyle(
  262. fontSize: 15.0,
  263. color: ColorUtils.string2Color('#54638C'),
  264. fontWeight: FontWeight.w400),
  265. ),
  266. const MyAssetImage(
  267. Assets.rewardsRewardsRight,
  268. width: 12,
  269. height: 16,
  270. ),
  271. ],
  272. ),
  273. ],
  274. ).paddingOnly(left: 15, right: 15, top: 12, bottom: 20),
  275. ),
  276. ],
  277. ).marginOnly(left: 15, bottom: 15, right: 15);
  278. }
  279. Widget _buildPackage(BuildContext context, WidgetRef ref, _vm) {
  280. return Column(
  281. children: [
  282. Container(
  283. decoration: const BoxDecoration(
  284. color: Colors.white,
  285. borderRadius: BorderRadius.all(Radius.circular(6.0)),
  286. boxShadow: [
  287. BoxShadow(
  288. color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
  289. ],
  290. ),
  291. width: MediaQuery.of(context).size.width - 30,
  292. child: Column(
  293. crossAxisAlignment: CrossAxisAlignment.start,
  294. children: [
  295. Row(
  296. mainAxisSize: MainAxisSize.min,
  297. mainAxisAlignment: MainAxisAlignment.start,
  298. crossAxisAlignment: CrossAxisAlignment.center,
  299. children: [
  300. const MyAssetImage(
  301. Assets.rewardsRewardsDetailPackage,
  302. width: 25,
  303. height: 25,
  304. ).marginOnly(right: 10),
  305. Text(
  306. 'What’s In The Package',
  307. style: TextStyle(
  308. fontSize: 15.0,
  309. color: ColorUtils.string2Color('#000000'),
  310. fontWeight: FontWeight.w500),
  311. )
  312. ],
  313. ).marginOnly(bottom: 10),
  314. Column(
  315. crossAxisAlignment: CrossAxisAlignment.start,
  316. children: [
  317. Text(
  318. 'Cute children umbrella X1',
  319. style: TextStyle(
  320. fontSize: 15.0,
  321. color: ColorUtils.string2Color('#54638C'),
  322. fontWeight: FontWeight.w400),
  323. ),
  324. Text(
  325. 'Cute children umbrella X1',
  326. style: TextStyle(
  327. fontSize: 15.0,
  328. color: ColorUtils.string2Color('#54638C'),
  329. fontWeight: FontWeight.w400),
  330. ),
  331. Text(
  332. 'Cute children umbrella X1',
  333. style: TextStyle(
  334. fontSize: 15.0,
  335. color: ColorUtils.string2Color('#54638C'),
  336. fontWeight: FontWeight.w400),
  337. ),
  338. Text(
  339. 'Cute children umbrella X1',
  340. style: TextStyle(
  341. fontSize: 15.0,
  342. color: ColorUtils.string2Color('#54638C'),
  343. fontWeight: FontWeight.w400),
  344. ),
  345. Text(
  346. 'Cute children umbrella X1',
  347. style: TextStyle(
  348. fontSize: 15.0,
  349. color: ColorUtils.string2Color('#54638C'),
  350. fontWeight: FontWeight.w400),
  351. ),
  352. ],
  353. ),
  354. ],
  355. ).paddingOnly(left: 15, right: 15, top: 12, bottom: 20),
  356. ),
  357. ],
  358. ).marginOnly(left: 15, bottom: 15, right: 15);
  359. }
  360. Widget _buildNotice(BuildContext context, WidgetRef ref, _vm) {
  361. return Column(
  362. children: [
  363. Container(
  364. decoration: const BoxDecoration(
  365. color: Colors.white,
  366. borderRadius: BorderRadius.all(Radius.circular(6.0)),
  367. boxShadow: [
  368. BoxShadow(
  369. color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
  370. ],
  371. ),
  372. width: MediaQuery.of(context).size.width - 30,
  373. child: Column(
  374. crossAxisAlignment: CrossAxisAlignment.start,
  375. children: [
  376. Row(
  377. mainAxisSize: MainAxisSize.min,
  378. mainAxisAlignment: MainAxisAlignment.start,
  379. crossAxisAlignment: CrossAxisAlignment.center,
  380. children: [
  381. const MyAssetImage(
  382. Assets.rewardsRewardsDetailNotice,
  383. width: 25,
  384. height: 25,
  385. ).marginOnly(right: 10),
  386. Text(
  387. 'Redemption Notice',
  388. style: TextStyle(
  389. fontSize: 15.0,
  390. color: ColorUtils.string2Color('#000000'),
  391. fontWeight: FontWeight.w500),
  392. )
  393. ],
  394. ).marginOnly(bottom: 10),
  395. Column(
  396. crossAxisAlignment: CrossAxisAlignment.start,
  397. children: [
  398. Text(
  399. 'S1.50 booking fee is applicable for online bookingsThe voucher can be redeemed in any of Cathay Outlet inSingapore both online and offline.lf digital movie voucher is redeemed for a rated movie,Cathay Cineplexes reserves the right to restrict entry toany person who is not in compliance with the relevantrating set by lnfocommunications Media DevelopmentAuthority of Singapore (IMDA).Cathay Outlets: https://www.cathaycineplexes.com.sg/cinemas/Redemption of YY Circle Points.Mondays onlyTime: 9am to 12pm / 2pm to 6pmLocation: 60 Paya Lebar Rd, #05-43 Paya Lebar Square, Singapore 409051Phone: 6604 6896**Redemption must be made personally with physical Identification Card (NRIC) and Logged-in to the YY Circle Account**Only Local registered numbers are allowed for redemption.**Screen shot of redemption code is NOT acceptable.',
  400. style: TextStyle(
  401. fontSize: 15.0,
  402. color: ColorUtils.string2Color('#54638C'),
  403. fontWeight: FontWeight.w400),
  404. ),
  405. ],
  406. ),
  407. ],
  408. ).paddingOnly(left: 15, right: 15, top: 12, bottom: 20),
  409. ),
  410. ],
  411. ).marginOnly(left: 15, bottom: 15, right: 15);
  412. }
  413. Widget _buildInstructions(BuildContext context, WidgetRef ref, _vm) {
  414. return Column(
  415. children: [
  416. Container(
  417. decoration: const BoxDecoration(
  418. color: Colors.white,
  419. borderRadius: BorderRadius.all(Radius.circular(6.0)),
  420. boxShadow: [
  421. BoxShadow(
  422. color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
  423. ],
  424. ),
  425. width: MediaQuery.of(context).size.width - 30,
  426. child: Column(
  427. crossAxisAlignment: CrossAxisAlignment.start,
  428. children: [
  429. Row(
  430. mainAxisSize: MainAxisSize.min,
  431. mainAxisAlignment: MainAxisAlignment.start,
  432. crossAxisAlignment: CrossAxisAlignment.center,
  433. children: [
  434. const MyAssetImage(
  435. Assets.rewardsRewardsDetailInstructions,
  436. width: 25,
  437. height: 25,
  438. ).marginOnly(right: 10),
  439. Text(
  440. 'Redemption Instructions',
  441. style: TextStyle(
  442. fontSize: 15.0,
  443. color: ColorUtils.string2Color('#000000'),
  444. fontWeight: FontWeight.w500),
  445. )
  446. ],
  447. ).marginOnly(bottom: 10),
  448. Column(
  449. crossAxisAlignment: CrossAxisAlignment.start,
  450. children: [
  451. Text(
  452. 'Reservation not required.Present your YY Circle Voucher (it’s under “Me”tab)At the outlet.',
  453. style: TextStyle(
  454. fontSize: 15.0,
  455. color: ColorUtils.string2Color('#54638C'),
  456. fontWeight: FontWeight.w400),
  457. ),
  458. ],
  459. ),
  460. ],
  461. ).paddingOnly(left: 15, right: 15, top: 12, bottom: 20),
  462. ),
  463. ],
  464. ).marginOnly(left: 15, bottom: 15, right: 15);
  465. }
  466. Widget _buildRedeemable(BuildContext context, WidgetRef ref, _vm) {
  467. return Column(
  468. children: [
  469. Container(
  470. decoration: const BoxDecoration(
  471. color: Colors.white,
  472. borderRadius: BorderRadius.all(Radius.circular(6.0)),
  473. boxShadow: [
  474. BoxShadow(
  475. color: Color.fromRGBO(184, 191, 217, 0.3), blurRadius: 6)
  476. ],
  477. ),
  478. width: MediaQuery.of(context).size.width - 30,
  479. child: Column(
  480. crossAxisAlignment: CrossAxisAlignment.start,
  481. children: [
  482. Row(
  483. mainAxisSize: MainAxisSize.min,
  484. mainAxisAlignment: MainAxisAlignment.start,
  485. crossAxisAlignment: CrossAxisAlignment.center,
  486. children: [
  487. const MyAssetImage(
  488. Assets.rewardsRewardsDetailNotice,
  489. width: 25,
  490. height: 25,
  491. ).marginOnly(right: 10),
  492. Text(
  493. 'Redeemable On',
  494. style: TextStyle(
  495. fontSize: 15.0,
  496. color: ColorUtils.string2Color('#000000'),
  497. fontWeight: FontWeight.w500),
  498. )
  499. ],
  500. ).marginOnly(bottom: 10),
  501. Column(
  502. crossAxisAlignment: CrossAxisAlignment.start,
  503. children: [
  504. Text(
  505. 'Sunday: 10:00 - 22:00',
  506. style: TextStyle(
  507. fontSize: 15.0,
  508. color: ColorUtils.string2Color('#54638C'),
  509. fontWeight: FontWeight.w400),
  510. ),
  511. Text(
  512. 'Monday: 10:00 - 22:00',
  513. style: TextStyle(
  514. fontSize: 15.0,
  515. color: ColorUtils.string2Color('#54638C'),
  516. fontWeight: FontWeight.w400),
  517. ),
  518. Text(
  519. 'Tuesday: 10:00 - 22:00',
  520. style: TextStyle(
  521. fontSize: 15.0,
  522. color: ColorUtils.string2Color('#54638C'),
  523. fontWeight: FontWeight.w400),
  524. ),
  525. Text(
  526. 'Wednesday: 10:00 - 22:00',
  527. style: TextStyle(
  528. fontSize: 15.0,
  529. color: ColorUtils.string2Color('#54638C'),
  530. fontWeight: FontWeight.w400),
  531. ),
  532. Text(
  533. 'Thursday: 10:00 - 22:00',
  534. style: TextStyle(
  535. fontSize: 15.0,
  536. color: ColorUtils.string2Color('#54638C'),
  537. fontWeight: FontWeight.w400),
  538. ),
  539. Text(
  540. 'Friday: 10:00 - 22:00',
  541. style: TextStyle(
  542. fontSize: 15.0,
  543. color: ColorUtils.string2Color('#54638C'),
  544. fontWeight: FontWeight.w400),
  545. ),
  546. ],
  547. ),
  548. ],
  549. ).paddingOnly(left: 15, right: 15, top: 12, bottom: 20),
  550. ),
  551. ],
  552. ).marginOnly(left: 15, bottom: 15, right: 15);
  553. }
  554. @override
  555. Widget build(BuildContext context, WidgetRef ref) {
  556. final _vm = ref.read(rewardsDetailVmProvider.notifier);
  557. final state = ref.watch(rewardsDetailVmProvider);
  558. return Scaffold(
  559. appBar: MyAppBar.appBar(
  560. context,
  561. "Verification Detail",
  562. backgroundColor: context.appColors.whiteBG,
  563. ),
  564. body: Column(
  565. children: [
  566. Expanded(
  567. child: SingleChildScrollView(
  568. scrollDirection: Axis.vertical,
  569. physics: const BouncingScrollPhysics(),
  570. clipBehavior: Clip.none,
  571. child: Column(
  572. children: [
  573. Container(
  574. color: ColorUtils.string2Color('#F2F3F6'),
  575. padding: const EdgeInsets.only(top: 15),
  576. child: Column(
  577. children: [
  578. _buildSaleItem(context, ref, _vm),
  579. _buildDeal(context, ref, _vm),
  580. _buildPackage(context, ref, _vm),
  581. _buildNotice(context, ref, _vm),
  582. _buildInstructions(context, ref, _vm),
  583. _buildRedeemable(context, ref, _vm),
  584. ],
  585. )),
  586. ],
  587. ))),
  588. Container(
  589. height: 50,
  590. color: ColorUtils.string2Color('#4161D0'),
  591. child: Flex(
  592. direction: Axis.horizontal,
  593. children: [
  594. Expanded(
  595. flex: 1,
  596. child: Container(
  597. color: ColorUtils.string2Color('#4161D0'),
  598. height: 100,
  599. child: Row(
  600. mainAxisAlignment: MainAxisAlignment.center,
  601. crossAxisAlignment: CrossAxisAlignment.center,
  602. children: [
  603. MyTextView(
  604. "Redeem",
  605. fontSize: 16,
  606. textColor: Colors.white,
  607. isFontMedium: true,
  608. ),
  609. ],
  610. ),
  611. ).onTap(() {
  612. RewardsConfirmPage.startInstance();
  613. }),
  614. ),
  615. ],
  616. ),
  617. )
  618. ],
  619. ),
  620. );
  621. }
  622. }