由于某些原因,我无法在导航后转到下一页后专注于TextField.当 Select 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放在主页上,我可以很好地聚焦在那里,但不能放在Settings页面中的TextField上.我想这和键盘没有优先于弹出的页面有关吧?还是怎么回事?如何让应用程序只关注导航页面上的输入字段?