| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- import '/backend/api_requests/api_calls.dart';
- import '/components/header_buttons_component_widget.dart';
- import '/flutter_flow/flutter_flow_theme.dart';
- import '/flutter_flow/flutter_flow_util.dart';
- import '/flutter_flow/flutter_flow_widgets.dart';
- import '/horecagelegenhedenoverzicht/horecagelegenheidoverzicht_kaart/horecagelegenheidoverzicht_kaart_widget.dart';
- import '/shared/drawer_component/drawer_component_widget.dart';
- import 'dart:ui';
- import 'dart:async';
- import 'package:flutter/material.dart';
- import 'package:flutter_spinkit/flutter_spinkit.dart';
- import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
- import 'package:google_fonts/google_fonts.dart';
- import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
- import 'package:provider/provider.dart';
- import 'thuis_bezorgen_model.dart';
- export 'thuis_bezorgen_model.dart';
- class ThuisBezorgenWidget extends StatefulWidget {
- const ThuisBezorgenWidget({
- super.key,
- required this.plaats,
- });
- final String? plaats;
- static String routeName = 'thuisBezorgen';
- static String routePath = '/thuisBezorgen';
- @override
- State<ThuisBezorgenWidget> createState() => _ThuisBezorgenWidgetState();
- }
- class _ThuisBezorgenWidgetState extends State<ThuisBezorgenWidget>
- with RouteAware {
- late ThuisBezorgenModel _model;
- final scaffoldKey = GlobalKey<ScaffoldState>();
- @override
- void initState() {
- super.initState();
- _model = createModel(context, () => ThuisBezorgenModel());
- }
- @override
- void dispose() {
- routeObserver.unsubscribe(this);
- _model.dispose();
- super.dispose();
- }
- @override
- void didUpdateWidget(ThuisBezorgenWidget oldWidget) {
- super.didUpdateWidget(oldWidget);
- _model.widget = widget;
- }
- @override
- void didChangeDependencies() {
- super.didChangeDependencies();
- final route = DebugModalRoute.of(context);
- if (route != null) {
- routeObserver.subscribe(this, route);
- }
- debugLogGlobalProperty(context);
- }
- @override
- void didPopNext() {
- if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
- setState(() => _model.isRouteVisible = true);
- debugLogWidgetClass(_model);
- }
- }
- @override
- void didPush() {
- if (mounted && DebugFlutterFlowModelContext.maybeOf(context) == null) {
- setState(() => _model.isRouteVisible = true);
- debugLogWidgetClass(_model);
- }
- }
- @override
- void didPop() {
- _model.isRouteVisible = false;
- }
- @override
- void didPushNext() {
- _model.isRouteVisible = false;
- }
- @override
- Widget build(BuildContext context) {
- DebugFlutterFlowModelContext.maybeOf(context)
- ?.parentModelCallback
- ?.call(_model);
- _model.horecagelegenheidoverzichtKaartModels.clear();
- return GestureDetector(
- onTap: () {
- FocusScope.of(context).unfocus();
- FocusManager.instance.primaryFocus?.unfocus();
- },
- child: Scaffold(
- key: scaffoldKey,
- backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
- drawer: Drawer(
- elevation: 16.0,
- child: wrapWithModel(
- model: _model.drawerComponentModel,
- updateCallback: () => safeSetState(() {}),
- child: Builder(builder: (_) {
- return DebugFlutterFlowModelContext(
- rootModel: _model.rootModel,
- child: DrawerComponentWidget(),
- );
- }),
- ),
- ),
- appBar: PreferredSize(
- preferredSize: Size.fromHeight(80.0),
- child: AppBar(
- backgroundColor: FlutterFlowTheme.of(context).primaryText,
- automaticallyImplyLeading: false,
- actions: [],
- flexibleSpace: FlexibleSpaceBar(
- background: wrapWithModel(
- model: _model.headerButtonsComponentModel,
- updateCallback: () => safeSetState(() {}),
- child: Builder(builder: (_) {
- return DebugFlutterFlowModelContext(
- rootModel: _model.rootModel,
- child: HeaderButtonsComponentWidget(),
- );
- }),
- ),
- centerTitle: true,
- expandedTitleScale: 1.0,
- ),
- bottom: PreferredSize(
- preferredSize: Size.fromHeight(70.0),
- child: Container(),
- ),
- toolbarHeight: MediaQuery.sizeOf(context).height * 0.25,
- elevation: 2.0,
- ),
- ),
- body: SafeArea(
- top: true,
- child: Column(
- mainAxisSize: MainAxisSize.max,
- children: [
- Expanded(
- child: RefreshIndicator(
- onRefresh: () async {
- safeSetState(
- () => _model.staggeredViewPagingController?.refresh());
- await _model.waitForOnePageForStaggeredView();
- },
- child: PagedMasonryGridView<ApiPagingParams, dynamic>.count(
- pagingController: _model.setStaggeredViewController(
- (nextPageMarker) => HorecagelegenheidoverzichtCall.call(
- townid: widget!.plaats,
- displayId: 'services_2',
- page: nextPageMarker.nextPageNumber,
- ),
- ),
- crossAxisCount: () {
- if (MediaQuery.sizeOf(context).width < kBreakpointSmall) {
- return 1;
- } else if (MediaQuery.sizeOf(context).width <
- kBreakpointMedium) {
- return 1;
- } else if (MediaQuery.sizeOf(context).width <
- kBreakpointLarge) {
- return 2;
- } else {
- return 3;
- }
- }(),
- crossAxisSpacing: 10.0,
- mainAxisSpacing: 10.0,
- builderDelegate: PagedChildBuilderDelegate<dynamic>(
- // Customize what your widget looks like when it's loading the first page.
- firstPageProgressIndicatorBuilder: (_) => Center(
- child: SizedBox(
- width: 80.0,
- height: 80.0,
- child: SpinKitFadingCircle(
- color: FlutterFlowTheme.of(context).primary,
- size: 80.0,
- ),
- ),
- ),
- // Customize what your widget looks like when it's loading another page.
- newPageProgressIndicatorBuilder: (_) => Center(
- child: SizedBox(
- width: 80.0,
- height: 80.0,
- child: SpinKitFadingCircle(
- color: FlutterFlowTheme.of(context).primary,
- size: 80.0,
- ),
- ),
- ),
- noItemsFoundIndicatorBuilder: (_) => Center(
- child: Image.asset(
- 'assets/images/logo800px.png',
- ),
- ),
- itemBuilder: (context, _, bezorgerItemIndex) {
- final bezorgerItemItem = _model
- .staggeredViewPagingController!
- .itemList![bezorgerItemIndex];
- return Builder(builder: (_) {
- return DebugFlutterFlowModelContext(
- rootModel: _model.rootModel,
- parentModelCallback: (m) {
- _model.horecagelegenheidoverzichtKaartModels[
- 'Keyjjq_${bezorgerItemIndex}_of_${_model.staggeredViewPagingController!.itemList!.length}'] = m;
- },
- child: HorecagelegenheidoverzichtKaartWidget(
- key: Key(
- 'Keyjjq_${bezorgerItemIndex}_of_${_model.staggeredViewPagingController!.itemList!.length}'),
- titel: getJsonField(
- bezorgerItemItem,
- r'''$.titel''',
- ).toString(),
- logo: getJsonField(
- bezorgerItemItem,
- r'''$.logo''',
- ).toString(),
- nid: getJsonField(
- bezorgerItemItem,
- r'''$.nid''',
- ).toString(),
- adres: getJsonField(
- bezorgerItemItem,
- r'''$.adres''',
- ).toString(),
- plaats: getJsonField(
- bezorgerItemItem,
- r'''$.plaats''',
- ).toString(),
- categorie: (getJsonField(
- bezorgerItemItem,
- r'''$.categorie''',
- true,
- ) as List?)
- ?.map<String>((e) => e.toString())
- .toList()
- .cast<String>(),
- ),
- );
- });
- },
- ),
- ),
- ),
- ),
- ],
- ),
- ),
- ),
- );
- }
- }
|