event_current_widget.dart 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721
  1. import '/backend/api_requests/api_calls.dart';
  2. import '/evenement/evenement_horecagelegenheid/evenement_horecagelegenheid_widget.dart';
  3. import '/evenement/evenement_info/evenement_info_widget.dart';
  4. import '/evenement/evenement_v2_h_t_m_l_component/evenement_v2_h_t_m_l_component_widget.dart';
  5. import '/flutter_flow/flutter_flow_icon_button.dart';
  6. import '/flutter_flow/flutter_flow_theme.dart';
  7. import '/flutter_flow/flutter_flow_util.dart';
  8. import '/flutter_flow/flutter_flow_widgets.dart';
  9. import '/shared/drawer_component/drawer_component_widget.dart';
  10. import 'dart:ui';
  11. import 'package:carousel_slider/carousel_slider.dart';
  12. import 'package:cached_network_image/cached_network_image.dart';
  13. import 'package:flutter/material.dart';
  14. import 'package:flutter_spinkit/flutter_spinkit.dart';
  15. import 'package:google_fonts/google_fonts.dart';
  16. import 'package:provider/provider.dart';
  17. import 'package:share_plus/share_plus.dart';
  18. import 'event_current_model.dart';
  19. export 'event_current_model.dart';
  20. class EventCurrentWidget extends StatefulWidget {
  21. const EventCurrentWidget({
  22. super.key,
  23. this.nid,
  24. this.horecaid,
  25. });
  26. final String? nid;
  27. final String? horecaid;
  28. static String routeName = 'EventCurrent';
  29. static String routePath = '/eventCurrent';
  30. @override
  31. State<EventCurrentWidget> createState() => _EventCurrentWidgetState();
  32. }
  33. class _EventCurrentWidgetState extends State<EventCurrentWidget>
  34. with RouteAware {
  35. late EventCurrentModel _model;
  36. final scaffoldKey = GlobalKey<ScaffoldState>();
  37. @override
  38. void initState() {
  39. super.initState();
  40. _model = createModel(context, () => EventCurrentModel());
  41. }
  42. @override
  43. void dispose() {
  44. routeObserver.unsubscribe(this);
  45. _model.dispose();
  46. super.dispose();
  47. }
  48. @override
  49. void didUpdateWidget(EventCurrentWidget oldWidget) {
  50. super.didUpdateWidget(oldWidget);
  51. _model.widget = widget;
  52. }
  53. @override
  54. void didChangeDependencies() {
  55. super.didChangeDependencies();
  56. final route = DebugModalRoute.of(context);
  57. if (route != null) {
  58. routeObserver.subscribe(this, route);
  59. }
  60. debugLogGlobalProperty(context);
  61. }
  62. @override
  63. void didPopNext() {
  64. if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
  65. setState(() => _model.isRouteVisible = true);
  66. debugLogWidgetClass(_model);
  67. }
  68. }
  69. @override
  70. void didPush() {
  71. if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
  72. setState(() => _model.isRouteVisible = true);
  73. debugLogWidgetClass(_model);
  74. }
  75. }
  76. @override
  77. void didPop() {
  78. _model.isRouteVisible = false;
  79. }
  80. @override
  81. void didPushNext() {
  82. _model.isRouteVisible = false;
  83. }
  84. @override
  85. Widget build(BuildContext context) {
  86. DebugFlutterFlowModelContext.maybeOf(context)
  87. ?.parentModelCallback
  88. ?.call(_model);
  89. return FutureBuilder<ApiCallResponse>(
  90. future: EvenementCall.call(
  91. nid: widget!.nid,
  92. ),
  93. builder: (context, snapshot) {
  94. // Customize what your widget looks like when it's loading.
  95. if (!snapshot.hasData) {
  96. return Scaffold(
  97. backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
  98. body: Center(
  99. child: SizedBox(
  100. width: 80.0,
  101. height: 80.0,
  102. child: SpinKitFadingCircle(
  103. color: Color(0xFFB1061E),
  104. size: 80.0,
  105. ),
  106. ),
  107. ),
  108. );
  109. }
  110. final eventCurrentEvenementResponse = snapshot.data!;
  111. _model.debugBackendQueries[
  112. 'EvenementCall_statusCode_Scaffold_vv4pr88m'] = debugSerializeParam(
  113. eventCurrentEvenementResponse.statusCode,
  114. ParamType.int,
  115. link:
  116. 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EventCurrent',
  117. name: 'int',
  118. nullable: false,
  119. );
  120. _model.debugBackendQueries[
  121. 'EvenementCall_responseBody_Scaffold_vv4pr88m'] =
  122. debugSerializeParam(
  123. eventCurrentEvenementResponse.bodyText,
  124. ParamType.String,
  125. link:
  126. 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EventCurrent',
  127. name: 'String',
  128. nullable: false,
  129. );
  130. debugLogWidgetClass(_model);
  131. return GestureDetector(
  132. onTap: () {
  133. FocusScope.of(context).unfocus();
  134. FocusManager.instance.primaryFocus?.unfocus();
  135. },
  136. child: Scaffold(
  137. key: scaffoldKey,
  138. backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
  139. drawer: Drawer(
  140. elevation: 16.0,
  141. child: wrapWithModel(
  142. model: _model.drawerComponentModel,
  143. updateCallback: () => safeSetState(() {}),
  144. child: Builder(builder: (_) {
  145. return DebugFlutterFlowModelContext(
  146. rootModel: _model.rootModel,
  147. child: DrawerComponentWidget(),
  148. );
  149. }),
  150. ),
  151. ),
  152. appBar: PreferredSize(
  153. preferredSize:
  154. Size.fromHeight(MediaQuery.sizeOf(context).height * 0.12),
  155. child: AppBar(
  156. backgroundColor: FlutterFlowTheme.of(context).info,
  157. automaticallyImplyLeading: false,
  158. actions: [],
  159. flexibleSpace: FlexibleSpaceBar(
  160. title: Align(
  161. alignment: AlignmentDirectional(0.0, 0.0),
  162. child: Row(
  163. mainAxisSize: MainAxisSize.max,
  164. children: [
  165. Padding(
  166. padding: EdgeInsetsDirectional.fromSTEB(
  167. 12.0, 0.0, 0.0, 0.0),
  168. child: FlutterFlowIconButton(
  169. borderColor: Color(0x00FF0000),
  170. borderRadius: 30.0,
  171. borderWidth: 1.0,
  172. buttonSize: 50.0,
  173. fillColor: Color(0xFFFF0000),
  174. icon: Icon(
  175. Icons.arrow_back_outlined,
  176. color: Colors.white,
  177. size: 30.0,
  178. ),
  179. onPressed: () async {
  180. context.pop();
  181. },
  182. ),
  183. ),
  184. FlutterFlowIconButton(
  185. borderRadius: 8.0,
  186. buttonSize: 40.0,
  187. fillColor: FlutterFlowTheme.of(context).primary,
  188. icon: Icon(
  189. Icons.dehaze_outlined,
  190. color: FlutterFlowTheme.of(context).info,
  191. size: 24.0,
  192. ),
  193. onPressed: () async {
  194. scaffoldKey.currentState!.openDrawer();
  195. },
  196. ),
  197. ],
  198. ),
  199. ),
  200. background: Align(
  201. alignment: AlignmentDirectional(0.0, 0.0),
  202. child: Padding(
  203. padding:
  204. EdgeInsetsDirectional.fromSTEB(100.0, 0.0, 15.0, 0.0),
  205. child: ClipRRect(
  206. borderRadius: BorderRadius.circular(8.0),
  207. child: Image.asset(
  208. 'assets/images/logo800px.png',
  209. width: MediaQuery.sizeOf(context).width * 0.7,
  210. fit: BoxFit.fitWidth,
  211. ),
  212. ),
  213. ),
  214. ),
  215. centerTitle: true,
  216. expandedTitleScale: 1.0,
  217. ),
  218. toolbarHeight: MediaQuery.sizeOf(context).height * 0.2,
  219. elevation: 2.0,
  220. ),
  221. ),
  222. body: SafeArea(
  223. top: true,
  224. child: Column(
  225. mainAxisSize: MainAxisSize.max,
  226. children: [
  227. Builder(
  228. builder: (context) {
  229. final fotoos = EvenementCall.eventFotoos(
  230. eventCurrentEvenementResponse.jsonBody,
  231. )?.toList() ??
  232. [];
  233. _model.debugGeneratorVariables[
  234. 'fotoos${fotoos.length > 100 ? ' (first 100)' : ''}'] =
  235. debugSerializeParam(
  236. fotoos.take(100),
  237. ParamType.String,
  238. isList: true,
  239. link:
  240. 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EventCurrent',
  241. name: 'String',
  242. nullable: false,
  243. );
  244. debugLogWidgetClass(_model);
  245. return Container(
  246. width: double.infinity,
  247. height: 200.0,
  248. child: CarouselSlider.builder(
  249. itemCount: fotoos.length,
  250. itemBuilder: (context, fotoosIndex, _) {
  251. final fotoosItem = fotoos[fotoosIndex];
  252. return ClipRRect(
  253. borderRadius: BorderRadius.circular(8.0),
  254. child: CachedNetworkImage(
  255. fadeInDuration: Duration(milliseconds: 500),
  256. fadeOutDuration: Duration(milliseconds: 500),
  257. imageUrl: fotoosItem,
  258. width: 200.0,
  259. height: 200.0,
  260. fit: BoxFit.cover,
  261. ),
  262. );
  263. },
  264. carouselController: _model.carouselController ??=
  265. CarouselSliderController(),
  266. options: CarouselOptions(
  267. initialPage: max(0, min(1, fotoos.length - 1)),
  268. viewportFraction: 0.5,
  269. disableCenter: true,
  270. enlargeCenterPage: true,
  271. enlargeFactor: 0.25,
  272. enableInfiniteScroll: true,
  273. scrollDirection: Axis.horizontal,
  274. autoPlay: false,
  275. onPageChanged: (index, _) =>
  276. _model.carouselCurrentIndex = index,
  277. ),
  278. ),
  279. );
  280. },
  281. ),
  282. Row(
  283. mainAxisSize: MainAxisSize.max,
  284. mainAxisAlignment: MainAxisAlignment.center,
  285. children: [
  286. Text(
  287. valueOrDefault<String>(
  288. EvenementCall.eventTitle(
  289. eventCurrentEvenementResponse.jsonBody,
  290. ),
  291. 'title',
  292. ),
  293. style:
  294. FlutterFlowTheme.of(context).headlineLarge.override(
  295. font: GoogleFonts.interTight(
  296. fontWeight: FlutterFlowTheme.of(context)
  297. .headlineLarge
  298. .fontWeight,
  299. fontStyle: FlutterFlowTheme.of(context)
  300. .headlineLarge
  301. .fontStyle,
  302. ),
  303. letterSpacing: 0.0,
  304. fontWeight: FlutterFlowTheme.of(context)
  305. .headlineLarge
  306. .fontWeight,
  307. fontStyle: FlutterFlowTheme.of(context)
  308. .headlineLarge
  309. .fontStyle,
  310. shadows: [
  311. Shadow(
  312. color: FlutterFlowTheme.of(context).secondaryText,
  313. offset: Offset(2.0, 2.0),
  314. blurRadius: 2.0,
  315. )
  316. ],
  317. ),
  318. ),
  319. Builder(
  320. builder: (context) => FlutterFlowIconButton(
  321. borderRadius: 8.0,
  322. buttonSize: 40.0,
  323. fillColor: Color(0xFFF265A0),
  324. icon: Icon(
  325. Icons.share,
  326. color: FlutterFlowTheme.of(context).info,
  327. size: 24.0,
  328. ),
  329. onPressed: () async {
  330. await Share.share(
  331. 'https://uitgk.com/${widget!.nid}',
  332. sharePositionOrigin:
  333. getWidgetBoundingBox(context),
  334. );
  335. },
  336. ),
  337. ),
  338. ],
  339. ),
  340. Text(
  341. valueOrDefault<String>(
  342. widget!.nid,
  343. 'nid',
  344. ),
  345. style: FlutterFlowTheme.of(context).bodyMedium.override(
  346. font: GoogleFonts.inter(
  347. fontWeight: FlutterFlowTheme.of(context)
  348. .bodyMedium
  349. .fontWeight,
  350. fontStyle: FlutterFlowTheme.of(context)
  351. .bodyMedium
  352. .fontStyle,
  353. ),
  354. letterSpacing: 0.0,
  355. fontWeight: FlutterFlowTheme.of(context)
  356. .bodyMedium
  357. .fontWeight,
  358. fontStyle:
  359. FlutterFlowTheme.of(context).bodyMedium.fontStyle,
  360. ),
  361. ),
  362. Text(
  363. valueOrDefault<String>(
  364. EvenementCall.eventDate(
  365. eventCurrentEvenementResponse.jsonBody,
  366. ),
  367. 'date',
  368. ),
  369. style: FlutterFlowTheme.of(context).headlineSmall.override(
  370. font: GoogleFonts.interTight(
  371. fontWeight: FlutterFlowTheme.of(context)
  372. .headlineSmall
  373. .fontWeight,
  374. fontStyle: FlutterFlowTheme.of(context)
  375. .headlineSmall
  376. .fontStyle,
  377. ),
  378. letterSpacing: 0.0,
  379. fontWeight: FlutterFlowTheme.of(context)
  380. .headlineSmall
  381. .fontWeight,
  382. fontStyle: FlutterFlowTheme.of(context)
  383. .headlineSmall
  384. .fontStyle,
  385. ),
  386. ),
  387. Expanded(
  388. child: Row(
  389. mainAxisSize: MainAxisSize.max,
  390. children: [
  391. Material(
  392. color: Colors.transparent,
  393. elevation: 7.0,
  394. child: Container(
  395. decoration: BoxDecoration(
  396. boxShadow: [
  397. BoxShadow(
  398. blurRadius: 4.0,
  399. color: Color(0x33000000),
  400. offset: Offset(
  401. 0.0,
  402. 2.0,
  403. ),
  404. )
  405. ],
  406. gradient: LinearGradient(
  407. colors: [Color(0xFFE51414), Color(0xFFD28039)],
  408. stops: [0.0, 1.0],
  409. begin: AlignmentDirectional(0.0, -1.0),
  410. end: AlignmentDirectional(0, 1.0),
  411. ),
  412. border: Border.all(
  413. width: 2.0,
  414. ),
  415. ),
  416. child: Column(
  417. mainAxisSize: MainAxisSize.max,
  418. children: [
  419. Padding(
  420. padding: EdgeInsetsDirectional.fromSTEB(
  421. 1.0, 3.0, 1.0, 2.0),
  422. child: Builder(
  423. builder: (context) {
  424. final categorie =
  425. EvenementCall.eventCategorie(
  426. eventCurrentEvenementResponse
  427. .jsonBody,
  428. )?.toList() ??
  429. [];
  430. _model.debugGeneratorVariables[
  431. 'categorie${categorie.length > 100 ? ' (first 100)' : ''}'] =
  432. debugSerializeParam(
  433. categorie.take(100),
  434. ParamType.String,
  435. isList: true,
  436. link:
  437. 'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=EventCurrent',
  438. name: 'String',
  439. nullable: false,
  440. );
  441. debugLogWidgetClass(_model);
  442. return Row(
  443. mainAxisSize: MainAxisSize.max,
  444. mainAxisAlignment:
  445. MainAxisAlignment.end,
  446. children: List.generate(
  447. categorie.length, (categorieIndex) {
  448. final categorieItem =
  449. categorie[categorieIndex];
  450. return Align(
  451. alignment:
  452. AlignmentDirectional(1.0, 0.0),
  453. child: Padding(
  454. padding: EdgeInsetsDirectional
  455. .fromSTEB(4.0, 1.0, 4.0, 1.0),
  456. child: Material(
  457. color: Colors.transparent,
  458. elevation: 3.0,
  459. shape: RoundedRectangleBorder(
  460. borderRadius:
  461. BorderRadius.circular(
  462. 2.0),
  463. ),
  464. child: Container(
  465. decoration: BoxDecoration(
  466. color: Color(0xFF25CC3E),
  467. boxShadow: [
  468. BoxShadow(
  469. blurRadius: 4.0,
  470. color:
  471. Color(0x33000000),
  472. offset: Offset(
  473. 0.0,
  474. 2.0,
  475. ),
  476. )
  477. ],
  478. borderRadius:
  479. BorderRadius.circular(
  480. 2.0),
  481. border: Border.all(
  482. width: 0.5,
  483. ),
  484. ),
  485. child: Padding(
  486. padding:
  487. EdgeInsetsDirectional
  488. .fromSTEB(0.0, 0.0,
  489. 4.0, 0.0),
  490. child: Text(
  491. categorieItem,
  492. style:
  493. FlutterFlowTheme.of(
  494. context)
  495. .titleSmall
  496. .override(
  497. font: GoogleFonts
  498. .interTight(
  499. fontWeight:
  500. FlutterFlowTheme.of(
  501. context)
  502. .titleSmall
  503. .fontWeight,
  504. fontStyle:
  505. FlutterFlowTheme.of(
  506. context)
  507. .titleSmall
  508. .fontStyle,
  509. ),
  510. letterSpacing: 0.0,
  511. fontWeight:
  512. FlutterFlowTheme.of(
  513. context)
  514. .titleSmall
  515. .fontWeight,
  516. fontStyle:
  517. FlutterFlowTheme.of(
  518. context)
  519. .titleSmall
  520. .fontStyle,
  521. shadows: [
  522. Shadow(
  523. color: FlutterFlowTheme
  524. .of(context)
  525. .secondaryText,
  526. offset: Offset(
  527. 2.0, 2.0),
  528. blurRadius: 2.0,
  529. )
  530. ],
  531. ),
  532. ),
  533. ),
  534. ),
  535. ),
  536. ),
  537. );
  538. }),
  539. );
  540. },
  541. ),
  542. ),
  543. Padding(
  544. padding: EdgeInsetsDirectional.fromSTEB(
  545. 4.0, 2.0, 4.0, 15.0),
  546. child: ClipRRect(
  547. borderRadius: BorderRadius.circular(8.0),
  548. child: CachedNetworkImage(
  549. fadeInDuration:
  550. Duration(milliseconds: 500),
  551. fadeOutDuration:
  552. Duration(milliseconds: 500),
  553. imageUrl: EvenementCall.eventLogog(
  554. eventCurrentEvenementResponse.jsonBody,
  555. )!,
  556. width: MediaQuery.sizeOf(context).width *
  557. 0.15,
  558. height:
  559. MediaQuery.sizeOf(context).height *
  560. 0.15,
  561. fit: BoxFit.cover,
  562. ),
  563. ),
  564. ),
  565. Expanded(
  566. child: wrapWithModel(
  567. model: _model.evenementInfoModel,
  568. updateCallback: () => safeSetState(() {}),
  569. child: Builder(builder: (_) {
  570. return DebugFlutterFlowModelContext(
  571. rootModel: _model.rootModel,
  572. child: EvenementInfoWidget(
  573. nid: EvenementCall.eventNid(
  574. eventCurrentEvenementResponse
  575. .jsonBody,
  576. ),
  577. title: EvenementCall.eventTitle(
  578. eventCurrentEvenementResponse
  579. .jsonBody,
  580. ),
  581. date: EvenementCall.eventDate(
  582. eventCurrentEvenementResponse
  583. .jsonBody,
  584. ),
  585. adres: EvenementCall.eventAdres(
  586. eventCurrentEvenementResponse
  587. .jsonBody,
  588. ),
  589. plaats: EvenementCall.eventPlaats(
  590. eventCurrentEvenementResponse
  591. .jsonBody,
  592. ),
  593. entreetoelichting: EvenementCall
  594. .eventEntreeToelichting(
  595. eventCurrentEvenementResponse
  596. .jsonBody,
  597. ),
  598. entreeprijs:
  599. EvenementCall.eventEntreeprijs(
  600. eventCurrentEvenementResponse
  601. .jsonBody,
  602. ),
  603. website: EvenementCall.eventWebsiteg(
  604. eventCurrentEvenementResponse
  605. .jsonBody,
  606. ),
  607. contact: EvenementCall.eventContact(
  608. eventCurrentEvenementResponse
  609. .jsonBody,
  610. ),
  611. logo: EvenementCall.eventLogog(
  612. eventCurrentEvenementResponse
  613. .jsonBody,
  614. ),
  615. fotoos: EvenementCall.eventFotoos(
  616. eventCurrentEvenementResponse
  617. .jsonBody,
  618. ),
  619. categories:
  620. EvenementCall.eventCategorie(
  621. eventCurrentEvenementResponse
  622. .jsonBody,
  623. ),
  624. ),
  625. );
  626. }),
  627. ),
  628. ),
  629. ],
  630. ),
  631. ),
  632. ),
  633. SingleChildScrollView(
  634. child: Column(
  635. mainAxisSize: MainAxisSize.max,
  636. children: [
  637. Container(
  638. width: MediaQuery.sizeOf(context).width * 0.6,
  639. decoration: BoxDecoration(
  640. color: FlutterFlowTheme.of(context).alternate,
  641. boxShadow: [
  642. BoxShadow(
  643. blurRadius: 4.0,
  644. color: Color(0x33000000),
  645. offset: Offset(
  646. 4.0,
  647. 2.0,
  648. ),
  649. )
  650. ],
  651. borderRadius: BorderRadius.circular(4.0),
  652. border: Border.all(
  653. color: Colors.black,
  654. ),
  655. ),
  656. child: wrapWithModel(
  657. model: _model.evenementV2HTMLComponentModel,
  658. updateCallback: () => safeSetState(() {}),
  659. child: Builder(builder: (_) {
  660. return DebugFlutterFlowModelContext(
  661. rootModel: _model.rootModel,
  662. child: EvenementV2HTMLComponentWidget(
  663. body: EvenementCall.eventBody(
  664. eventCurrentEvenementResponse
  665. .jsonBody,
  666. ),
  667. ),
  668. );
  669. }),
  670. ),
  671. ),
  672. ],
  673. ),
  674. ),
  675. ],
  676. ),
  677. ),
  678. Expanded(
  679. child: wrapWithModel(
  680. model: _model.evenementHorecagelegenheidModel,
  681. updateCallback: () => safeSetState(() {}),
  682. child: Builder(builder: (_) {
  683. return DebugFlutterFlowModelContext(
  684. rootModel: _model.rootModel,
  685. child: EvenementHorecagelegenheidWidget(
  686. establishmentID: widget!.horecaid!,
  687. ),
  688. );
  689. }),
  690. ),
  691. ),
  692. ],
  693. ),
  694. ),
  695. ),
  696. );
  697. },
  698. );
  699. }
  700. }