我有以下代碼,如下所示,每次我對文本欄位進行更改時,都會呼叫一個函式,在我的例子中是 doSomething()。但是,我假設由于我將文本的值系結到一個變數,如果要更新該變數,文本欄位文本也會更新。這沒有發生,我的問題是,每次相應變數更改時,讓文本欄位更新其文本的最簡單方法是什么。
編輯:為了澄清,我沒有問題讓 doSomething() 函式更新代碼的其他部分,我正在尋找外部變數更改文本欄位文本的逆向
import 'package:flutter/material.dart';
class DynamicTextField extends StatefulWidget {
const DynamicTextField(
{
required this.value,
Key? key})
: super(key: key);
final double value;
@override
State<DynamicTextField> createState() =>
_DynamicTextFieldState(value);
}
class _DynamicTextFieldState extends State<DynamicTextField> {
_DynamicTextFieldState(this.value);
final double value;
late TextEditingController textChanged;
@override
void initState() {
textChanged = TextEditingController(text: value.toString());
super.initState();
}
@override
Widget build(BuildContext context) {
return TextField(
controller: textChanged,
onChanged: (text) {
doSomething();
},
);
}
}
uj5u.com熱心網友回復:
您可以使用為該小部件設定的控制器更改TextField值。textChanged
String stringVariable = "some value";
textChanged.text = stringVariable;
然后你可以用 normal 更新狀態SetState(() {}),它應該更新值TextField
uj5u.com熱心網友回復:
您的值被宣告為final。這意味著它只能設定一次。嘗試洗掉最終宣告。
我還看到您還兩次宣告value變數,而不是參考原始 value 變數。
第二個宣告應該在小部件構建方法 & should = widget.value中。
uj5u.com熱心網友回復:
這將在每次DynamicTextField 重建時更新文本。
@override
void initState() {
textChanged = TextEditingController(text: widget.value.toString());
super.initState();
}
取決于你如何DynamicTextField在另一個類中使用。一旦小部件初始化,生命周期StatefullWidget就是呼叫 initState。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/526227.html
標籤:扑镖小部件
上一篇:從firebase下載并顯示影像
