Commit 117108f

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2024-01-04 11:57:52
fix issues during routing
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 97dc415
lib/screens/home_screen.dart
@@ -129,7 +129,7 @@ class AppHome extends StatelessWidget {
                   tooltip: localizations.statistics,
                   backgroundColor: const Color(0xFF6F6F6F),
                   onPressed: () {
-                    Navigator.push(context, _buildTransition(const StatisticsPage(), settings.animationSpeed));
+                    _buildTransition(context, const StatisticsPage(), settings.animationSpeed);
                   },
                   child: const Icon(Icons.insights, color: Colors.black),
                 ),
@@ -142,7 +142,7 @@ class AppHome extends StatelessWidget {
                   backgroundColor: const Color(0xFF6F6F6F),
                   child: const Icon(Icons.settings, color: Colors.black),
                   onPressed: () {
-                    Navigator.push(context, _buildTransition(const SettingsPage(), settings.animationSpeed));
+                    _buildTransition(context, const SettingsPage(), settings.animationSpeed);
                   },
                 ),
               ],
@@ -153,17 +153,21 @@ class AppHome extends StatelessWidget {
   }
 }
 
-PageRoute _buildTransition(Widget page, int duration) {
-  return TimedMaterialPageRouter(duration: Duration(milliseconds: duration), builder: (context) => page);
+// FIXME: pass context on transitions, use instead of Navigator.push
+void _buildTransition(BuildContext context, Widget page, int duration) {
+  Navigator.push(context,
+    TimedMaterialPageRouter(
+      transitionDuration: Duration(milliseconds: duration),
+      builder: (context) => page
+    )
+  );
 }
 
 class TimedMaterialPageRouter extends MaterialPageRoute {
-  Duration _duration = Duration.zero;
-
-  TimedMaterialPageRouter({required WidgetBuilder builder, required Duration duration}) : super(builder: builder) {
-    _duration = duration;
-  }
+  TimedMaterialPageRouter({
+    required super.builder,
+    required this.transitionDuration});
 
   @override
-  Duration get transitionDuration => _duration;
+  final Duration transitionDuration;
 }
lib/screens/settings_screen.dart
@@ -29,7 +29,6 @@ class SettingsPage extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
-    print(Theme.of(context).inputDecorationTheme.border);
     final localizations = AppLocalizations.of(context)!;
     return Scaffold(
       appBar: AppBar(
lib/main.dart
@@ -103,21 +103,15 @@ class AppRoot extends StatelessWidget {
         onGenerateTitle: (context) {
           return AppLocalizations.of(context)!.title;
         },
-        theme: ThemeData(
-          colorScheme: ColorScheme.fromSeed(
-            seedColor: settings.accentColor,
-            brightness: Brightness.light,
-          ),
-          useMaterial3: true,
-        ),
-        darkTheme: ThemeData(
-          colorScheme: ColorScheme.fromSeed(
-            seedColor: settings.accentColor,
-            brightness: Brightness.dark,
-            background: Colors.black
-          ),
-          useMaterial3: true
-        ),
+        theme: _buildTheme(ColorScheme.fromSeed(
+          seedColor: settings.accentColor,
+          brightness: Brightness.light,
+        )),
+        darkTheme: _buildTheme(ColorScheme.fromSeed(
+          seedColor: settings.accentColor,
+          brightness: Brightness.dark,
+          background: Colors.black
+        )),
         themeMode: settings.themeMode,
         localizationsDelegates: const [
           AppLocalizations.delegate,
@@ -127,32 +121,30 @@ class AppRoot extends StatelessWidget {
         ],
         supportedLocales: AppLocalizations.supportedLocales,
         locale: settings.language,
-        home: Builder(
-          builder: (context) {
-            final inputBorder = OutlineInputBorder(
-                borderSide: BorderSide(
-                  width: 3,
-                  color: Theme.of(context).primaryColor,
-                ),
-                borderRadius: BorderRadius.circular(20)
-            );
-
-            final theme = Theme.of(context).copyWith(
-              inputDecorationTheme: InputDecorationTheme(
-                errorMaxLines: 5,
-                border: inputBorder,
-                enabledBorder: inputBorder,
-              ),
-            );
-            return Theme(
-              data: theme,
-              child: const AppHome()
-            );
-          }
-        ),
+        home: const AppHome(),
       );
     });
   }
+
+  ThemeData _buildTheme(ColorScheme colorScheme) {
+    final inputBorder = OutlineInputBorder(
+        borderSide: BorderSide(
+          width: 3,
+          color: colorScheme.outlineVariant,
+        ),
+        borderRadius: BorderRadius.circular(20)
+    );
+
+    return ThemeData(
+      colorScheme: colorScheme,
+      useMaterial3: true,
+      inputDecorationTheme: InputDecorationTheme(
+        errorMaxLines: 5,
+        border: inputBorder,
+        enabledBorder: inputBorder,
+      ),
+    );
+  }
 }
 
 bool _isDatabaseClosed = false;