Щелчок TextField изменяет объект во флаттере
Как только TextField
фокусируется, объект, который сохраняется, если он включен, изменяется так, что TextField
немедленно отключается. Это также происходит, когда другой TextField
выше фокусируется.
TextField
находится внутри StatefulWidget и Category
объект содержит другой объект с именем Goal
который содержит bool
переменная, если она включена или отключена. Эта переменная также используется для включения или отключения TextField
,
TextField(
controller: _goalAmountController,
enabled: widget.category.goal.enabled,
decoration: InputDecoration(
labelText: "Goal Amount",
border: OutlineInputBorder(),
),
onChanged: (value) {
try {
widget.category.goal.amount = double.parse(value);
} on Exception {
//TODO display error message
print("Invalid Goal-Amount");
}
},
),
Там также есть switch
ниже TextField
включить или отключить Goal
установив это enabled
переменная.
SwitchListTile(
value: widget.category.goal.enabled,
title: Text("Enable Goal"),
onChanged: (value) {
setState(
() {
widget.category.goal.enabled = value;
},
);
},
),
Я обнаружил, что, кажется, как будто щелчок TextField
заменит Goal
объект с новым, который имеет false
в качестве значения по умолчанию для enabled
,
1 ответ
Попробуй использовать FocusNodes
вместо:
FocusNode textNode = FocusNode();
TextField(
focusNode: textNode,
controller: _goalAmountController,
enabled: widget.category.goal.enabled,
decoration: InputDecoration(
labelText: "Goal Amount",
border: OutlineInputBorder(),
),
позже, когда вы захотите отключить этот textField, когда пользователь взаимодействует с другим виджетом, вы можете вызвать:
textNode.unfocus() ;