我正在尝试弄清楚如何在 Flutter 中使用 TextEditor。
我有“卡片编辑器”(基本上我希望能够处理相当于一段文本的内容)
new EditableText(
autofocus: true,
maxLines: null,
backgroundCursorColor: Colors.amber,
cursorColor: Colors.green,
style: TextStyle(),
focusNode: FocusNode(),
controller: controller,
onSubmitted: (val) {
_addCard(val);
Navigator.pop(context);
},
)
Run Code Online (Sandbox Code Playgroud)
我根据 TextField 的示例进行了改编。
但我有几个问题。
首先,当我打字时,它似乎没有显示任何内容。光标移动,但看不到任何文本。当没有明确的样式时这是默认的吗?
其次,如何触发提交?对于文本字段,CR / Enter 按钮可以执行此操作。显然我明白为什么你不一定想要 EditableText 但我应该做什么呢?
第三,我需要能够将默认文本放入此小部件中。我尝试向 EditableText 添加“值”属性,但这似乎不正确。有什么方法可以做到这一点?
来自TextField 类 - 材质库 - Dart API:
EditableText,它是 TextField 核心的原始文本编辑控件。EditableText 小部件很少直接使用,除非您正在实现完全不同的设计语言,例如 Cupertino。
这是TextField的示例,来自我的应用程序 flutter listview CRUD 应用程序,使用不安全的其余 api
class _TaskEditPageWidgetState extends State<TaskEditPageWidget> {
TextEditingController _noteController;
@override
void initState() {
super.initState();
_noteController = TextEditingController.fromValue(
TextEditingValue(
text: widget.taskOpj.note,
),
);
}
@override
void dispose() {
_noteController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: _appBar(),
body: _body(),
);
}
Widget _appBar() {
return AppBar(
title: new Text("Edit Task"),
actions: <Widget>[
new IconButton(
icon: new Icon(Icons.save),
onPressed: _save,
),
],
);
}
Widget _body() {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Text("Note:"),
TextField(
decoration: InputDecoration(border: InputBorder.none),
autofocus: true,
keyboardType: TextInputType.multiline,
maxLines: null,
controller: _noteController),
],
),
);
}
Future _save() async {
widget.taskOpj.note = _noteController.text;
await Tasks.updateTask(widget.taskOpj);
widget.notifyParent();
Navigator.pop(context);
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
17921 次 |
| 最近记录: |