diff --git a/lib/base.dart b/lib/base.dart
index 6d4c6dc..c309385 100644
--- a/lib/base.dart
+++ b/lib/base.dart
@@ -1,8 +1,12 @@
import 'package:flutter/material.dart';
-import 'package:animations/animations.dart';
+import 'package:provider/provider.dart';
+import 'package:flutter/services.dart';
import 'package:adguard_home_manager/widgets/bottom_nav_bar.dart';
-import 'package:flutter/services.dart';
+
+import 'package:adguard_home_manager/models/app_screen.dart';
+import 'package:adguard_home_manager/config/app_screens.dart';
+import 'package:adguard_home_manager/providers/servers_provider.dart';
class Base extends StatefulWidget {
const Base({Key? key}) : super(key: key);
@@ -16,6 +20,16 @@ class _BaseState extends State {
@override
Widget build(BuildContext context) {
+ final serversProvider = Provider.of(context);
+
+ List screens = serversProvider.selectedServer != null
+ ? screensServerConnected
+ : screensSelectServer;
+
+ if (selectedScreen > screens.length-1) {
+ setState(() => selectedScreen = 0);
+ }
+
return AnnotatedRegion(
value: SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
@@ -31,20 +45,14 @@ class _BaseState extends State {
: Brightness.light,
),
child: Scaffold(
- body: PageTransitionSwitcher(
- duration: const Duration(milliseconds: 200),
- transitionBuilder: (
- (child, primaryAnimation, secondaryAnimation) => FadeThroughTransition(
- animation: primaryAnimation,
- secondaryAnimation: secondaryAnimation,
- child: child,
- )
- ),
- ),
+ appBar: screens[selectedScreen].appBar,
+ body: screens[selectedScreen].body,
bottomNavigationBar: BottomNavBar(
+ screens: screens,
selectedScreen: selectedScreen,
onSelect: (value) => setState(() => selectedScreen = value),
),
+ floatingActionButton: screens[selectedScreen].fab,
),
);
}
diff --git a/lib/config/app_screens.dart b/lib/config/app_screens.dart
index a3e1215..a0dad14 100644
--- a/lib/config/app_screens.dart
+++ b/lib/config/app_screens.dart
@@ -1,19 +1,42 @@
import 'package:flutter/material.dart';
-import 'package:adguard_home_manager/screens/home.dart';
-import 'package:adguard_home_manager/screens/settings.dart';
+import 'package:adguard_home_manager/screens/connect/fab.dart';
+import 'package:adguard_home_manager/screens/home/appbar.dart';
+import 'package:adguard_home_manager/screens/connect/appbar.dart';
+import 'package:adguard_home_manager/screens/connect/connect.dart';
+import 'package:adguard_home_manager/screens/home/home.dart';
+import 'package:adguard_home_manager/screens/settings/appbar.dart';
+import 'package:adguard_home_manager/screens/settings/settings.dart';
import 'package:adguard_home_manager/models/app_screen.dart';
-const List screens = [
- AppScreen(
- name: "home",
- icon: Icons.home_rounded,
- widget: Home()
+List screensSelectServer = [
+ const AppScreen(
+ name: "connect",
+ icon: Icons.link_rounded,
+ appBar: ConnectAppBar(),
+ body: Connect(),
+ fab: FabConnect()
),
- AppScreen(
+ const AppScreen(
name: "settings",
icon: Icons.settings_rounded,
- widget: Settings()
+ appBar: SettingsAppBar(),
+ body: Settings()
+ )
+];
+
+List screensServerConnected = [
+ const AppScreen(
+ name: "home",
+ icon: Icons.home_rounded,
+ appBar: HomeAppBar(),
+ body: Home()
+ ),
+ const AppScreen(
+ name: "settings",
+ icon: Icons.settings_rounded,
+ appBar: SettingsAppBar(),
+ body: Settings()
)
];
\ No newline at end of file
diff --git a/lib/config/system_overlay_style.dart b/lib/config/system_overlay_style.dart
new file mode 100644
index 0000000..0f2e2e1
--- /dev/null
+++ b/lib/config/system_overlay_style.dart
@@ -0,0 +1,16 @@
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+
+SystemUiOverlayStyle systemUiOverlayStyleConfig(BuildContext context) => SystemUiOverlayStyle(
+ statusBarColor: Colors.transparent,
+ statusBarBrightness: Theme.of(context).brightness == Brightness.light
+ ? Brightness.light
+ : Brightness.dark,
+ statusBarIconBrightness: Theme.of(context).brightness == Brightness.light
+ ? Brightness.dark
+ : Brightness.light,
+ systemNavigationBarColor: Theme.of(context).scaffoldBackgroundColor,
+ systemNavigationBarIconBrightness: Theme.of(context).brightness == Brightness.light
+ ? Brightness.dark
+ : Brightness.light,
+);
\ No newline at end of file
diff --git a/lib/functions/conversions.dart b/lib/functions/conversions.dart
new file mode 100644
index 0000000..dd1e471
--- /dev/null
+++ b/lib/functions/conversions.dart
@@ -0,0 +1,45 @@
+import 'package:intl/intl.dart';
+
+bool? convertFromIntToBool(int value) {
+ if (value == 1) {
+ return true;
+ }
+ else if (value == 0) {
+ return false;
+ }
+ else {
+ return null;
+ }
+}
+
+int? convertFromBoolToInt(bool value) {
+ if (value == true) {
+ return 1;
+ }
+ else if (value == false) {
+ return 0;
+ }
+ else {
+ return null;
+ }
+}
+
+double formatPercentage(double value) {
+ return (value * 100).truncateToDouble() / 100;
+}
+
+String intFormat(int value, String locale) {
+ final f = NumberFormat("#,###", locale);
+ return f.format(value);
+}
+
+List