首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用后TextFormField未聚焦

启用后TextFormField未聚焦
EN

Stack Overflow用户
提问于 2020-02-10 23:45:22
回答 1查看 227关注 0票数 2

如果我启用并聚焦先前禁用的TextFormField,则看不到闪烁的光标。在本例中,TextFormField最初是禁用的,正如_enabled状态变量所指示的那样,当您单击enable按钮时,该字段将被启用并聚焦,但闪烁的光标不可见。我必须单击TextFormField才能看到闪烁的光标。

代码语言:javascript
复制
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool _enabled = false;
  FocusNode focusNodeA = FocusNode();

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        title: Text('Test'),
      ),
      body: TextFormField(
        enabled: _enabled,
        focusNode: focusNodeA,
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() => _enabled = true);
          FocusScope.of(context).requestFocus(focusNodeA);
        },
        child: Text('Enable'),
      ),
    );
  }
}

如果我按两次“Enable”,光标就会显示出来。

如果TextFormField已启用并聚焦,则闪烁的光标可见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-11 01:38:34

1-你专注于setState之后,所以它不工作。就像下面的2-你不能聚焦小部件,直到禁用和当你启用小部件。当你在ui tread中同时进行聚焦和启用时,在启用之前先尝试聚焦,因为它们的渲染time.if,所以在聚焦问题得到解决之前会有一些延迟。

代码语言:javascript
复制
setState(() {
            Future.delayed(const Duration(milliseconds: 10), ()
            {
              FocusScope
                  .of(
                  context)
                  .requestFocus(
                  focusNodeA);
              print(FocusScope.of(context).focusedChild.toString());

            });
            _enabled = true;
          });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60153807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档