#flutter
Вопрос:
Я добавил логику авторизации, связанную с провайдером, в свое приложение, и все работает нормально, пока не будет проверена кнопка регистрации. Во-первых, я должен упомянуть, что регистрация и регистрация-это одни и те же функции. Во-вторых, просмотр обновляется после нажатия кнопки «Войти» (мгновенно перемещается на экран «Навигатор»), поэтому функции записываются нормально. В-третьих, после нажатия кнопки Регистрация и последующего перехода на последний экран приложение отображает экран навигации внизу.
Так в чем же может быть проблема? Может кто-нибудь объяснить мне такое поведение?
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(
value: Auth(),
)
],
child: Consumer<Auth>(
builder: (context, auth, _) {
return MaterialApp(
title: 'x',
theme: CustomTheme.lightTheme,
home: auth.isAuth
? BottomNavigation()
: FutureBuilder(
future: auth.tryAutoLogin(),
builder: (context, authResultSnapshot) =>
authResultSnapshot.connectionState ==
ConnectionState.waiting
? SplashScreen()
: SignIn(),
),
routes: Routes.getRoutes(),
);
},
),
);
}
}
class SignIn extends StatefulWidget {
@override
_SignInState createState() => _SignInState();
}
class _SignInState extends State<SignIn> {
void _signIn() {
Provider.of<Auth>(context, listen: false).signIn();
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
OutlinedButton(
onPressed: () => _signIn(),
child: Text("signIn"),
),
OutlinedButton(
onPressed: () => Navigator.pushNamed(context, Routes.signUp),
child: Text("go to sign up"),
),
],
);
}
}
class SignUp extends StatefulWidget {
@override
_SignUpState createState() => _SignUpState();
}
class _SignUpState extends State<SignUp> {
void _signUp() {
Provider.of<Auth>(context, listen: false).signUp();
}
@override
Widget build(BuildContext context) {
return Center(
child: OutlinedButton(
onPressed: () => _signUp(),
child: Text("SignUp"),
),
);
}
}