Files
fcs/lib/widget/offline_redirect.dart

53 lines
1.2 KiB
Dart
Raw Normal View History

2020-05-29 07:45:27 +06:30
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:fcs/model/main_model.dart';
class OfflineRedirect extends StatefulWidget {
final Widget child;
OfflineRedirect({@required this.child});
@override
_OfflineRedirectState createState() => _OfflineRedirectState();
}
class _OfflineRedirectState extends State<OfflineRedirect> {
Timer offlineTimer;
@override
void initState() {
super.initState();
}
@override
void didChangeDependencies() {
_startOfflineTimer();
super.didChangeDependencies();
}
_startOfflineTimer() async {
if (offlineTimer!=null && offlineTimer.isActive) return;
var _duration = new Duration(milliseconds: 500);
this.offlineTimer = new Timer.periodic(_duration, offlineNav);
}
Future<void> offlineNav(Timer timer) async {
MainModel mainModel = Provider.of<MainModel>(context, listen: false);
if (!mainModel.isOnline) {
timer.cancel();
Navigator.pushNamedAndRemoveUntil(context, "/", (r) => false);
}
}
void dispose() {
offlineTimer.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return widget.child;
}
}