feat: implement refresh button and jump-to-person plus better ws reconnect
This commit is contained in:
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:hydrated_bloc/hydrated_bloc.dart';
|
||||
import 'package:ot_viewer_app/global_location_store.dart';
|
||||
import 'package:ot_viewer_app/refresh_cubit.dart';
|
||||
import 'package:ot_viewer_app/settings_page.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'map_page.dart';
|
||||
@ -20,8 +21,22 @@ Future<void> main() async {
|
||||
|
||||
GetIt.I
|
||||
.registerSingleton<GlobalLocationStoreCubit>(GlobalLocationStoreCubit());
|
||||
GetIt.I.registerSingleton<RefreshCubit>(RefreshCubit());
|
||||
|
||||
runApp(MyApp());
|
||||
runApp(
|
||||
MultiBlocProvider(
|
||||
providers: [
|
||||
BlocProvider(
|
||||
lazy: false,
|
||||
create: (BuildContext context) => SettingsCubit(),
|
||||
),
|
||||
BlocProvider(
|
||||
create: (BuildContext context) => GetIt.I.get<RefreshCubit>(),
|
||||
),
|
||||
],
|
||||
child: MyApp(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
@ -31,7 +46,17 @@ class MyApp extends StatelessWidget {
|
||||
title: 'OwnTracks Data Viewer',
|
||||
theme: ThemeData.dark(),
|
||||
home: Scaffold(
|
||||
appBar: AppBar(title: const Text('OwnTrakcs Data Viewer')),
|
||||
appBar: AppBar(
|
||||
title: const Text('OwnTrakcs Data Viewer'),
|
||||
actions: [
|
||||
IconButton(
|
||||
icon: const Icon(Icons.refresh),
|
||||
onPressed: () async {
|
||||
context.read<RefreshCubit>().triggerRefresh();
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
body: const MainPage(),
|
||||
),
|
||||
);
|
||||
@ -60,28 +85,24 @@ class _MainPageState extends State<MainPage> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocProvider(
|
||||
lazy: false,
|
||||
create: (BuildContext context) => SettingsCubit(),
|
||||
child: Scaffold(
|
||||
body: IndexedStack(
|
||||
index: _currentIndex,
|
||||
children: _pages,
|
||||
),
|
||||
bottomNavigationBar: BottomNavigationBar(
|
||||
items: const <BottomNavigationBarItem>[
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(Icons.map),
|
||||
label: 'Map',
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(Icons.settings),
|
||||
label: 'Settings',
|
||||
),
|
||||
],
|
||||
currentIndex: _currentIndex,
|
||||
onTap: _onItemTapped,
|
||||
),
|
||||
return Scaffold(
|
||||
body: IndexedStack(
|
||||
index: _currentIndex,
|
||||
children: _pages,
|
||||
),
|
||||
bottomNavigationBar: BottomNavigationBar(
|
||||
items: const <BottomNavigationBarItem>[
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(Icons.map),
|
||||
label: 'Map',
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(Icons.settings),
|
||||
label: 'Settings',
|
||||
),
|
||||
],
|
||||
currentIndex: _currentIndex,
|
||||
onTap: _onItemTapped,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user