Показ другой страницы в зависимости от значения поставщика во FlutterAndroid

Форум для тех, кто программирует под Android
Anonymous
Показ другой страницы в зависимости от значения поставщика во Flutter

Сообщение Anonymous »

Это мой UserAuthProvider:

Код: Выделить всё

class UserAuthProvider extends ChangeNotifier {
bool _isSignedIn = false;
bool get isSignedIn => _isSignedIn;

void userSignedIn() {
_isSignedIn = true;
notifyListeners();
}

void userSignedOut() {
_isSignedIn = false;
notifyListeners();
}
}
Я хочу показывать HomePage, когда _isSignedIn имеет значение true, и я хочу показывать SignInPage, когда _isSignedIn имеет значение false. Пользователь может входить и выходить из системы на обеих страницах, поэтому я хочу, чтобы две страницы отображались непрерывно в зависимости от изменения значения поставщика.
Поэтому я создал MainPage. Вот мой код главной страницы:

Код: Выделить всё

class MainPage extends StatefulWidget {
const MainPage({super.key});

@override
State createState() => _MainScreenState();
}

class _MainScreenState extends State {
Map pages = {
true: HomePage(), false: LoginPage()
}

@override
Widget build(BuildContext context) {
return Consumer(builder: (context, provider, _){
return pages[provider.isSignedIn];
});
}
}
Однако этот код работает неправильно. Когда я запускаю приложение в первый раз, оно показывает LoginPage, поскольку начальное значение _isSignedIn является ложным. Но когда я меняю значение _isSignedIn с помощью context.read().userSignedIn(); внутри LoginPage, страница не меняется.
Как решить эту проблему? Или вы можете предложить мне лучший подход к показу разных страниц в зависимости от ценности поставщика?

Подробнее здесь: https://stackoverflow.com/questions/785 ... in-flutter

Вернуться в «Android»