Flutter   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了dart – 在Flutter中导航后无法在新页面中关注TextField大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
出于某种原因,我无法在导航后的下一页上关注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中解释.

在验证输入时显示错误消息时,我正在使用密钥来显示快餐栏,但现在我选择只在文本小部件中显示错误消息.

大佬总结

以上是大佬教程为你收集整理的dart – 在Flutter中导航后无法在新页面中关注TextField全部内容,希望文章能够帮你解决dart – 在Flutter中导航后无法在新页面中关注TextField所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。