【问题标题】:Flutter - How to use focusNode when a Widget/Page is LoadedFlutter - 加载小部件/页面时如何使用focusNode
【发布时间】:2020-05-31 03:04:33
【问题描述】:

我是 Flutter 的新手,我正在为我的 Flutter 应用程序创建一个设置页面。在设置页面上,我正在使用 formbuilder。当焦点位于“设置”页面(实际上是一个选项卡)时,我想从 Hive 中存储的值填充表单的字段。显然 focusNode 是要走的路。但是,我看到的所有示例都集中在 TextFields 上,而不是 Widget 或 Page 本身。

谁能用一个很好的例子指导我如何做到这一点?例如,如果页面/小部件被加载到移动屏幕上,则应显示一条消息。

【问题讨论】:

    标签: flutter hive widget focus flutter-layout


    【解决方案1】:

    您需要先创建一个有状态的小部件,状态小部件有一个名为 initState 的方法,该方法在该小部件的 build 方法被调用之前被调用。 focusNode 只能与 Input 小部件一起使用

    class SettingsScreen extends StatefulWidget {
      @override
      _SettingsScreenState createState() => _SettingsScreenState();
    }
    
    class _SettingsScreenState extends State<SettingsScreen> {
    
      bool _showDialog = false;
      @override
      void initState() {
        // TODO: implement initState
    
        // do your thing, perhaps call showDialog ?
         _showDialog=  true;
        super.initState();
      }
    
      @override
      Widget build(BuildContext context) {
    
        if(_showDialog) {
          showDilaog()
       }
    
        return Container(
    
        );
      }
    }
    
    

    【讨论】:

    • 我已经做了这么多。如此有效地你说我不能在非输入项上使用 FocusNode。所以我需要四处寻找其他选项,例如 initState。
    • 谢谢@Ahmed Khuttab
    • 我会对你的回答投赞成票,但我不确定这是否应该被接受,因为这可能会误导其他用户。
    猜你喜欢
    • 2019-09-14
    • 2019-10-18
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多