You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudsolutions-atoms/lib/views/pages/user/visits/regular_visits_page.dart

226 lines
10 KiB
Dart

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<RegularVisitsPage> with TickerProviderStateMixin {
RegularVisitsProvider _visitsProvider;
UserProvider _userProvider;
SettingProvider _settingProvider;
bool _expandedSearch = false;
@override
Widget build(BuildContext context) {
_visitsProvider = Provider.of<RegularVisitsProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context);
_userProvider = Provider.of<UserProvider>(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<void>(
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<void>(
// 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,
// ),
// ),
// ],
// ),
// ],
// ),
),
),
);
}
}