flutter - Flutter - 显示光标/克拉而不关注文本字段
问题描述
我正在从另一个小部件控制EditableText小部件的内容,但我想显示光标 - 但如果不给文本字段焦点,这似乎是不可能的。
这是代码中的一些示例 - Widget1 需要焦点。
父小部件(使用 Animated Builder 重建第二个小部件)
class ParentWidget extends StatefulWidget {
@override
_ParentWidgetState createState() => _ParentWidgetState();
}
class _ParentWidgetState extends State<ParentWidgetScreen> {
late ValueNotifier<String> email = ValueNotifier<String>('');
@override
void dispose() {
email.dispose();
}
@override
Widget build(BuildContext context) {
return Row(
children: [
Widget1(
onChanged: (value){
if(value != null){
String newEmailValue = value['email']!;
email.value = newEmailValue;
}
},
),
AnimatedBuilder(
animation: Listenable.merge([email]),
builder: (BuildContext context, _){
return Widget2(
email: email.value,
);
}
),
],
),
}
}
第二个小部件:
class Widget2 extends StatefulWidget {
final String email;
const Widget2({
required this.email,
});
@override
_Widget2State createState() => _Widget2State();
}
class _Widget2State extends State<Widget2> {
final TextEditingController _email = TextEditingController();
FocusNode _nodeEmail = FocusNode();
@override
Widget build(BuildContext context) {
_email.value = _email.value.copyWith( //Everytime "email" updates - this is rebuilt
text: widget.email,
selection: TextSelection.collapsed(offset: widget.emailSelectionOffset),
);
return EditableText(
controller: _email,
autofocus: true,
focusNode: _nodeEmail,
cursorColor: Colors.white,
backgroundCursorColor: Colors.white,
style: TextStyle(color: Colors.white),
readOnly: true,
showCursor: true,
),
}
}
解决方案
推荐阅读
- swift - Swift 和多个条件?
- sql - 当我删除一行时,如何自动从连接表中删除另一行?
- oauth-2.0 - 使用 OpenID Connect 和 OAuth 管理应用程序访问
- css - 仅在更大的屏幕上使用 CSS Bootstrap 类(卡片)
- javascript - 如何使用 iOS WKWebView 注入 JavaScript 回调来检测 onclick 事件?
- python - 在循环中构建图形时Tensorflow内存泄漏
- c# - 需要用文本文件中每一行的第一个索引填充我的列表框
- arangodb - 在 ArangoDB 中插入或更新文档失败,违反约束
- jquery - 用户点击工作,Jquery点击不工作
- x11 - 从 XDM 登录屏幕隐藏光标