gpt4 book ai didi

dart - 在 Flutter 中导航后无法关注新页面中的 TextField

转载 作者:IT老高 更新时间:2023-10-28 12:38:05 24 4
gpt4 key购买 nike

由于某种原因,导航后我无法在下一页上关注 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,但不能在“设置”页面中的那个上。我认为这与键盘没有优先于弹出页面有关吗?或者发生了什么?如何让应用只关注导航页面上的输入字段?

最佳答案

所以问题出在我将 GlobalKey 提供给 Scaffold 的事实。删除 key 解决了这个问题。不完全确定原因,但该问题主要在此 Github issue 中进行了解释。 .

我在验证输入时显示错误消息时使用该键弹出 snackbar ,但现在我选择仅在文本小部件中显示错误消息。

关于dart - 在 Flutter 中导航后无法关注新页面中的 TextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50535490/

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