dart – 在Flutter中导航后无法在新页面中关注TextField
发布时间:2020-12-14 14:48:36 所属栏目:百科 来源:网络整理
导读:出于某种原因,我无法在导航后的下一页上关注TextField.选择TextField时,键盘会自动关闭.如果我在TextField上设置autofocus:true,那么键盘将无限弹出并立即一次又一次地解除. 当我的应用程序大小合理时,我遇到了这个,但我能够在一个最小的示例应用程序中重新
出于某种原因,我无法在导航后的下一页上关注TextField.选择TextField时,键盘会自动关闭.如果我在TextField上设置autofocus:true,那么键盘将无限弹出并立即一次又一次地解除.
当我的应用程序大小合理时,我遇到了这个,但我能够在一个最小的示例应用程序中重新创建它. 我正在使用Dart 2.0.0-dev.55.0和Flutter beta v0.3.2. 主页代码: import 'package:flutter/material.dart'; import 'settings.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( title: 'Flutter Demo',theme: new ThemeData( primarySwatch: Colors.blue,),home: new MyHomePage(title: 'Flutter Demo Home Page'),); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key,this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => new _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title),body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[ Text('Helpful text.',// ===== Where navigation happens ===== RaisedButton( onPressed: () { Navigator.push(context,PageRouteBuilder( pageBuilder: (_,__,___) => SettingsPage())); },child: Text('Go to input page'),],); } } 这是包含TextField的页面的代码. import 'package:flutter/material.dart'; class SettingsPage extends StatefulWidget { SettingsPage({Key key}) : super(key: key); @override _SettingsPage createState() => new _SettingsPage(); } class _SettingsPage extends State<SettingsPage> { @override Widget build(BuildContext context) { final key = GlobalKey<ScaffoldState>(); return Scaffold( key: key,backgroundColor: Colors.white,appBar: AppBar( title: Text("Settings"),body: ListView( children: <Widget>[ Text("Enter something"),// Can't focus on this widget TextField(),); } } 如果我把TextField放在主页面上,我可以很好地专注于TextField,但是不能放在Settings页面的那个上.我认为它与键盘有关,而不是优先于弹出页面?或者发生了什么?我如何让应用程序专注于导航页面上的输入字段? 解决方法
所以问题来自于我向脚手架提供GlobalKey的事实.删除密钥可以解决问题.不完全确定原因,但问题主要在
Github issue中解释.
在验证输入时显示错误消息时,我正在使用密钥来显示快餐栏,但现在我选择只在文本小部件中显示错误消息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |