如果启用并聚焦以前禁用的TextFormField,我看不到 Flink 的光标。在本例中,TextFormField最初是禁用的,如_enabled
状态变量所示,当您单击启用按钮时,该字段将被启用并聚焦,但 Flink 的光标不可见。我必须单击TextFormField才能看到 Flink 的光标。
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'),
),
);
}
}
如果我按两次“启用”,则会显示光标。
如果TextFormField已启用并获得焦点,则 Flink 光标可见。
2条答案
按热度按时间55ooxyrt1#
1-你focused after setState so it not working. just do like below 2-你不能focused widget until disabled and when you enabled widget. when you do focusing and enabled at same time in ui tread它的尝试focused before enabled因为他们的渲染时间.if you post some delay to focusing the problem get solving.
rkkpypqq2#
你试试看