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