tom*_*gar 3 textfield flutter flutter-provider
目前,我正在学习 flutter,当提供者中的值发生变化时,无法更新一个 textController。这是我已经尝试过的代码:
TextEditingController textController;
@override
void initState() {
TranslateTextProvider myProvider = Provider.of<TranslateTextProvider>(
context,
listen: false,
);
super.initState();
textController = TextEditingController(text: myProvider.translated);
}
@override
void dispose() {
textController.dispose();
super.dispose();
}
Run Code Online (Sandbox Code Playgroud)
提供程序正在正确更新,但文本字段没有更新,是的,我已在文本字段上设置了控制器。我会很感激每一个提示。
如果你需要监听依赖更新,你需要使用didChangeDependencies!如果您正在收听更新的提供商,则会触发此操作。
这是您改编的示例:
TextEditingController textController;
@override
void initState() {
super.initState();
textController = TextEditingController();
}
@override
void didChangeDependencies() {
textController.text = Provider.of<TranslateTextProvider>(
context,
listen: true, // Be sure to listen
).text;
super.didChangeDependencies();
}
@override
void dispose() {
textController.dispose();
super.dispose();
}
Run Code Online (Sandbox Code Playgroud)
当然,您Provider必须分派更改,ChangeNotifier例如,如果您使用的是,则意味着notifyListeners 每当更新文本时都会调用(如果您使用 ChangeNotifier):
class TranslateTextProvider extends ChangeNotifier {
String _text = "";
String get text => _text;
set text(String newText) {
if (newText != text) {
_text = newText;
notifyListeners(); // Notify if the text changed
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |