diff --git a/lib/app.dart b/lib/app.dart index 5ba4596..912d495 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -96,6 +96,7 @@ class _AppState extends State with WidgetsBindingObserver { controller: App.bottomNavigator, navBarOverlap: const NavBarOverlap.none(), backgroundColor: Theme.of(context).colorScheme.primary, + handleAndroidBackButtonPress: false, screenTransitionAnimation: const ScreenTransitionAnimation(curve: Curves.easeOutQuad, duration: Duration(milliseconds: 200)), tabs: [ diff --git a/lib/state/app/infrastructure/loadableState/bloc/loadable_state_bloc.dart b/lib/state/app/infrastructure/loadableState/bloc/loadable_state_bloc.dart index 89998bb..b246417 100644 --- a/lib/state/app/infrastructure/loadableState/bloc/loadable_state_bloc.dart +++ b/lib/state/app/infrastructure/loadableState/bloc/loadable_state_bloc.dart @@ -37,6 +37,10 @@ class LoadableStateBloc extends Bloc { : Icons.signal_wifi_connected_no_internet_4 : Icons.device_unknown; + Color connectionColor(BuildContext context) => connectivityStatusKnown() && !isConnected() + ? Colors.grey.shade600 + : Theme.of(context).primaryColor; + String connectionText({int? lastUpdated}) => connectivityStatusKnown() ? isConnected() ? 'Verbindung fehlgeschlagen' diff --git a/lib/state/app/infrastructure/loadableState/view/loadable_state_error_bar.dart b/lib/state/app/infrastructure/loadableState/view/loadable_state_error_bar.dart index 2752714..bc5353c 100644 --- a/lib/state/app/infrastructure/loadableState/view/loadable_state_error_bar.dart +++ b/lib/state/app/infrastructure/loadableState/view/loadable_state_error_bar.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -31,14 +33,6 @@ class LoadableStateErrorBar extends StatelessWidget { child: Builder( builder: (context) { var bloc = context.watch(); - var status = ( - icon: bloc.connectionIcon(), - text: bloc.connectionText(lastUpdated: lastUpdated), - color: bloc.connectivityStatusKnown() && !bloc.isConnected() - ? Colors.grey.shade600 - : Theme.of(context).primaryColor - ); - return InkWell( onTap: () { if(!bloc.isConnected()) return; @@ -47,16 +41,9 @@ class LoadableStateErrorBar extends StatelessWidget { child: Container( height: 20, decoration: BoxDecoration( - color: status.color, - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon(status.icon, size: 14), - const SizedBox(width: 10), - Text(status.text, style: const TextStyle(fontSize: 12)) - ], + color: bloc.connectionColor(context), ), + child: LoadableStateErrorBarText(lastUpdated: lastUpdated), ), ); }, @@ -65,3 +52,41 @@ class LoadableStateErrorBar extends StatelessWidget { ), ); } + +class LoadableStateErrorBarText extends StatefulWidget { + final int? lastUpdated; + const LoadableStateErrorBarText({required this.lastUpdated, super.key}); + + @override + State createState() => _LoadableStateErrorBarTextState(); +} + +class _LoadableStateErrorBarTextState extends State { + late Timer _rebuildTimer; + @override + void initState() { + _rebuildTimer = Timer.periodic(const Duration(seconds: 10), (timer) => setState(() {})); + super.initState(); + } + + @override + Widget build(BuildContext context) { + var bloc = context.watch(); + + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(bloc.connectionIcon(), size: 14), + const SizedBox(width: 10), + Text(bloc.connectionText(lastUpdated: widget.lastUpdated), style: const TextStyle(fontSize: 12)) + ], + ); + } + + @override + void dispose() { + _rebuildTimer.cancel(); + super.dispose(); + } +} + diff --git a/lib/state/app/modules/marianumMessage/bloc/marianum_message_bloc.dart b/lib/state/app/modules/marianumMessage/bloc/marianum_message_bloc.dart index 375dae0..6a8e52d 100644 --- a/lib/state/app/modules/marianumMessage/bloc/marianum_message_bloc.dart +++ b/lib/state/app/modules/marianumMessage/bloc/marianum_message_bloc.dart @@ -7,12 +7,6 @@ sealed class MarianumMessageEvent extends LoadableHydratedBlocEvent { - MarianumMessageBloc() { - on((event, emit) { - add(Emit((state) => state.copyWith.messageList(messages: []))); - }); - } - @override Future gatherData() async { var messages = await repo.getMessages();