gpt4 book ai didi

flutter - textformfield 在导航后聚焦时重新加载屏幕

转载 作者:行者123 更新时间:2023-12-05 02:39:40 25 4
gpt4 key购买 nike

... 
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'haha',
theme: ThemeData(
fontFamily: 'Iransans',
primaryColor: Palette.primaryColor,
canvasColor: Palette.primaryColor, //my custom color
accentColor: Palette.accentColor),
initialRoute: "/",
routes: {
"/": (context) => Directionality(
textDirection: TextDirection.rtl, child: SplashPage()),
...

在 SplashPage 中,我从这里导航到登录页面


@override
Widget build(BuildContext context) {
Future.delayed(const Duration(seconds: 4), () {
Navigator.pushNamed(context,"/login" /*,arguments: "free"*/);
});
return const Scaffold(
backgroundColor: Palette.white,
body: Center(
child:
SizedBox(height: 60, width: 60, child: CircularProgressIndicator()),
),
);
}

这是我在 LoginPage 中的 TextField。无效的页面但是当直接从 MainPage 导航到这里时,一切都很好

Scaffold(
backgroundColor: Palette.primaryColor,
body: SingleChildScrollView(
child: Column(
children: <Widget>[
TextField(
autofocus: true,
textAlign: TextAlign.center,
//controller: _textFieldControllerUserName,
keyboardType: TextInputType.name,
),
],
),
),
);

最佳答案

flutter 将页面保存在一个堆栈中,并且堆栈中的所有内容都在工作:(即使页面在 backStack 中,build 方法也会运行,所以我将导航器移至 initState()

class SplashPageState extends State<SplashPage> {
@override
void initState() {
super.initState();
Future.delayed(const Duration(seconds: 4), () {
_navigateLoginPage(context);
});
}

@override
Widget build(BuildContext context) {
return const Scaffold(
backgroundColor: Palette.white,
body: Center(
child:
SizedBox(height: 60, width: 60, child: CircularProgressIndicator()),
),
);
}

关于flutter - textformfield 在导航后聚焦时重新加载屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68994383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com