Added emergency remote breakers

This commit is contained in:
2023-08-07 22:10:56 +02:00
parent ddae68825c
commit 86c3a397da
15 changed files with 271 additions and 30 deletions

View File

@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
@ -6,9 +7,12 @@ import 'package:jiffy/jiffy.dart';
import 'package:provider/provider.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'api/mhsl/breaker/getBreakers/getBreakersResponse.dart';
import 'app.dart';
import 'model/accountData.dart';
import 'model/accountModel.dart';
import 'model/breakers/Breaker.dart';
import 'model/breakers/BreakerProps.dart';
import 'model/chatList/chatListProps.dart';
import 'model/chatList/chatProps.dart';
import 'model/files/filesProps.dart';
@ -34,6 +38,8 @@ Future<void> main() async {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => BreakerProps()),
ChangeNotifierProvider(create: (context) => SettingsProvider()),
ChangeNotifierProvider(create: (context) => AccountModel()),
@ -58,6 +64,8 @@ class Main extends StatefulWidget {
}
class _MainState extends State<Main> {
late Timer refetchProps;
@override
void initState() {
Jiffy.setLocale("de");
@ -67,6 +75,10 @@ class _MainState extends State<Main> {
.setState(value ? AccountModelState.loggedIn : AccountModelState.loggedOut);
});
refetchProps = Timer.periodic(const Duration(seconds: 60), (timer) {
Provider.of<BreakerProps>(context, listen: false).run();
});
super.initState();
}
@ -93,18 +105,27 @@ class _MainState extends State<Main> {
themeMode: settings.val().appTheme,
theme: LightAppTheme.theme,
darkTheme: DarkAppTheme.theme,
home: Consumer<AccountModel>(
builder: (context, accountModel, child) {
switch(accountModel.state) {
case AccountModelState.loggedIn: return const App();
case AccountModelState.loggedOut: return const Login();
case AccountModelState.undefined: return const PlaceholderView(icon: Icons.timer, text: "Daten werden geladen");
}
},
),
home: Breaker(
breaker: BreakerArea.global,
child: Consumer<AccountModel>(
builder: (context, accountModel, child) {
switch(accountModel.state) {
case AccountModelState.loggedIn: return const App();
case AccountModelState.loggedOut: return const Login();
case AccountModelState.undefined: return const PlaceholderView(icon: Icons.timer, text: "Daten werden geladen");
}
},
)
)
);
},
),
);
}
@override
void dispose() {
refetchProps.cancel();
super.dispose();
}
}