import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; import 'package:test_sa/controllers/providers/api/regular_visits_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/models/visits/visits_group.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/views/pages/user/visits/update_visits_group_sheet.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/visits/visits_list.dart'; class RegularVisitsPage extends StatefulWidget { static final String id = "/Regular-visits"; @override _RegularVisitsPageState createState() => _RegularVisitsPageState(); } class _RegularVisitsPageState extends State with TickerProviderStateMixin { RegularVisitsProvider _visitsProvider; UserProvider _userProvider; SettingProvider _settingProvider; bool _expandedSearch = false; @override Widget build(BuildContext context) { _visitsProvider = Provider.of(context); _settingProvider = Provider.of(context); _userProvider = Provider.of(context); return Scaffold( appBar: DefaultAppBar(title: context.translation.preventiveMaintenance), body: SafeArea( child: LoadingManager( isLoading: _visitsProvider.isLoading, isFailedLoading: _visitsProvider.visits == null, stateCode: _visitsProvider.stateCode, onRefresh: () async { _visitsProvider.reset(); //_visitsProvider.visitsSearch = VisitsSearch(); await _visitsProvider.getVisits( user: _userProvider.user, host: _settingProvider.host, ); }, child: VisitsList( nextPage: _visitsProvider.nextPage, onLazyLoad: () async { await _visitsProvider.getVisits( user: _userProvider.user, host: _settingProvider.host, ); }, onEditGroup: (visits) async { VisitsGroup group = await showModalBottomSheet( isScrollControlled: true, context: context, builder: (context) { return UpdateVisitsGroupSheet( visits: visits, title: context.translation.updateRegularVisits, ); }, ) as VisitsGroup; if (group != null) { showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return CupertinoAlertDialog( title: Text(context.translation.updatingDots), content: Center(child: CircularProgressIndicator()), ); }, ); int status = await _visitsProvider.updateGroupOfVisits(user: _userProvider.user, host: _settingProvider.host, group: group); Navigator.of(context).pop(); if (status >= 200 && status < 300) { Fluttertoast.showToast( msg: context.translation.preventiveMaintenanceUpdatedSuccessfully, toastLength: Toast.LENGTH_LONG, gravity: ToastGravity.BOTTOM, ); } else { Fluttertoast.showToast( msg: HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation), toastLength: Toast.LENGTH_LONG, gravity: ToastGravity.BOTTOM, ); } } }, visits: _visitsProvider.visits, ), // child: Stack( // children: [ // Column( // children: [ // Container( // color: AColors.primaryColor, // padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), // child: Column( // children: [ // Row( // children: [ // ABackButton(), // Expanded( // child: Center( // child: Text( // context.translation.preventiveMaintenance, // style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic), // ), // ), // ), // AnimatedSwitcher( // duration: Duration(milliseconds: 400), // child: AIconButton( // key: ValueKey(_expandedSearch), // iconData: _expandedSearch ? Icons.keyboard_arrow_up : Icons.search, // color: AColors.secondaryColor, // buttonSize: 42, // backgroundColor: AColors.white, // onPressed: () async { // VisitsSearch _temp = await showModalBottomSheet( // context: context, // isScrollControlled: true, // builder: (context) { // return VisitsSearchDialog( // initialSearchValue: _visitsProvider.visitsSearch, // ); // }); // if (_temp != null) { // _visitsProvider.visitsSearch.fromSearch(_temp); // _visitsProvider.reset(); // setState(() {}); // } // }, // ), // ), // SizedBox( // width: 16, // ) // ], // ), // ], // ), // ), // Visibility( // visible: (_visitsProvider.visitsSearch.toMap()..remove("mostRecent")).isNotEmpty, // child: Padding( // padding: const EdgeInsets.all(8.0), // child: AButton( // text: context.translation.clearSearch, // onPressed: () { // _visitsProvider.visitsSearch = VisitsSearch(); // _visitsProvider.reset(); // setState(() {}); // }, // ), // ), // ), // Expanded( // child: VisitsList( // nextPage: _visitsProvider.nextPage, // onLazyLoad: () async { // await _visitsProvider.getVisits( // user: _userProvider.user, // host: _settingProvider.host, // ); // }, // onEditGroup: (visits) async { // VisitsGroup _group = await showModalBottomSheet( // isScrollControlled: true, // context: context, // builder: (context) { // return UpdateVisitsGroupSheet( // visits: visits, // title: context.translation.updateRegularVisits, // ); // }, // ) as VisitsGroup; // if (_group != null) { // showDialog( // context: context, // barrierDismissible: false, // builder: (BuildContext context) { // return CupertinoAlertDialog( // title: Text(context.translation.updatingDots), // content: Center(child: CircularProgressIndicator()), // ); // }, // ); // int status = await _visitsProvider.updateGroupOfVisits(user: _userProvider.user, host: _settingProvider.host, group: _group); // Navigator.of(context).pop(); // if (status >= 200 && status < 300) { // Fluttertoast.showToast( // msg: context.translation.preventiveMaintenanceUpdatedSuccessfully, // toastLength: Toast.LENGTH_LONG, // gravity: ToastGravity.BOTTOM, // ); // } else { // Fluttertoast.showToast( // msg: HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation), // toastLength: Toast.LENGTH_LONG, // gravity: ToastGravity.BOTTOM, // ); // } // } // }, // visits: _visitsProvider.visits, // ), // ), // ], // ), // ], // ), ), ), ); } }