【发布时间】:2021-07-15 11:02:33
【问题描述】:
我通过提供者实现了身份验证
问题是什么时候第一次通知 myHomeCalss 用户已通过不返回正确页面(MainGui)进行身份验证
SplashPages 是带有按钮的页面继续,并推送登录页面,
登录页面被推送到客户之外
但是当我不通过 SplashPages 时,它的效果很完美
请随意
//启动页面
ContinueButton(
onPressed: (){
Navigator.push(
context,
MaterialPageRoute(
builder: (_) =>
ListenableProvider.value(
value: yourModel,
child: LoginPage(),
),
),
);
}
)
//主要
void main() async {
setupLocator();
WidgetsFlutterBinding.ensureInitialized();
await firebase_core.Firebase.initializeApp();
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => AuthenticationService()),
],
child: MyApp(),
),
);
}
//我的应用
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHome(),
builder: (context, child) => Navigator(
key: locator<DialogService>().dialogNavigationKey,
onGenerateRoute: (settings) => MaterialPageRoute(
builder: (context) => DialogManager(child: child)),
));
}
}
我的家
Class MyHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SafeArea(
child: FutureBuilder<bool>(
future: startTime(),
builder: (BuildContext context, AsyncSnapshot<bool> snapshot2) {
if (snapshot2.hasData) {
if (snapshot2.data) {
return SplashPages();
} else {
return Consumer<AuthenticationService>(builder: (_, auth, __) {
if (auth.currentUserr == null) {
return LoginPage();
} else {
return FutureBuilder(
future: auth.populateCurrentUser(auth.currentUserr),
builder: (context, snapshot) {
if (snapshot.hasData) {
if (auth.currentUserr.emailVerified) {
return MainGui();
} else {
return ValidationMailPage(
email: auth.currentUserr.email,
);
}
} else
return Container(
// child: Center(
// child: SpinKitRotatingCircle(
// color: Colors.white,
// size: 50.0,
// ))
);
});
}
});
}
}
【问题讨论】:
-
那么您面临的问题是什么?
-
问题是当传递给 splashes-> 登录(验证它的工作但它没有再次重定向到 MainGui°
-
所以登录后没有导航到主页?
-
是的,尤其是当我经过启动页面时
-
如前所述,您可以按照此 SO 帖子中的建议更改您的设计:stackoverflow.com/questions/54377188/…