diff --git a/lib/app.dart b/lib/app.dart index 077549d..8afcd86 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:git_touch/home.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/theme.dart'; import 'package:provider/provider.dart'; class MyApp extends StatelessWidget { - @override - Widget build(BuildContext context) { + Widget _buildChild(BuildContext context) { final theme = Provider.of(context); switch (theme.theme) { case AppThemeType.cupertino: @@ -27,4 +27,10 @@ class MyApp extends StatelessWidget { ); } } + + @override + Widget build(BuildContext context) { + final auth = Provider.of(context); + return Container(key: auth.rootKey, child: _buildChild(context)); + } } diff --git a/lib/models/auth.dart b/lib/models/auth.dart index 9bc1b5c..fdcb014 100644 --- a/lib/models/auth.dart +++ b/lib/models/auth.dart @@ -237,7 +237,10 @@ class AuthModel with ChangeNotifier { super.dispose(); } - void setActiveAccountIndex(int index) { + var rootKey = UniqueKey(); + void setActiveAccountAndReload(int index) { + // https://stackoverflow.com/a/50116077 + rootKey = UniqueKey(); activeAccountIndex = index; _gqlClient = null; notifyListeners(); diff --git a/lib/screens/login.dart b/lib/screens/login.dart index 82d438d..220ffba 100644 --- a/lib/screens/login.dart +++ b/lib/screens/login.dart @@ -29,11 +29,7 @@ class _LoginScreenState extends State { return Link( onTap: () { - auth.setActiveAccountIndex(null); - // FIXME: trigger scaffold reload - Future.delayed(Duration(milliseconds: 100), () { - auth.setActiveAccountIndex(index); - }); + auth.setActiveAccountAndReload(index); }, child: Container( padding: CommonStyle.padding,