ChecklistEditor: Support autofocus for new notes

This commit is contained in:
Vishesh Handa
2020-02-19 17:04:53 +01:00
parent f6c64507c4
commit 0813429bb8

View File

@ -78,7 +78,9 @@ class ChecklistEditorState extends State<ChecklistEditor>
var itemTiles = <Widget>[];
for (var i = 0; i < checklist.items.length; i++) {
var item = checklist.items[i];
itemTiles.add(_buildTile(item, i));
var autofocus =
widget.autofocusOnEditor && (i == checklist.items.length - 1);
itemTiles.add(_buildTile(item, i, autofocus));
}
itemTiles.add(AddItemButton(
key: UniqueKey(),
@ -136,11 +138,12 @@ class ChecklistEditorState extends State<ChecklistEditor>
return note;
}
ChecklistItemTile _buildTile(ChecklistItem item, int index) {
ChecklistItemTile _buildTile(ChecklistItem item, int index, bool autofocus) {
return ChecklistItemTile(
key: UniqueKey(),
item: item,
focusNode: focusNodes[item],
autofocus: autofocus,
statusChanged: (bool newVal) {
setState(() {
item.checked = newVal;
@ -228,6 +231,7 @@ class ChecklistItemTile extends StatefulWidget {
final Function itemRemoved;
final Function itemFinished;
final FocusNode focusNode;
final bool autofocus;
ChecklistItemTile({
Key key,
@ -237,6 +241,7 @@ class ChecklistItemTile extends StatefulWidget {
@required this.itemRemoved,
@required this.itemFinished,
@required this.focusNode,
this.autofocus = false,
}) : super(key: key);
@override
@ -281,6 +286,7 @@ class _ChecklistItemTileState extends State<ChecklistItemTile> {
}
var editor = TextField(
autofocus: widget.autofocus,
focusNode: widget.focusNode,
keyboardType: TextInputType.text,
maxLines: null,