出于某种原因,我无法在导航后的下一页上关注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'),],); } }
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页面的那个上.我认为它与键盘有关,而不是优先于弹出页面?或者发生了什么?我如何让应用程序专注于导航页面上的输入字段?