questionController.text總是回傳我一個空值,而不是我在textformfield中插入的任何東西。
class _AddQuestionState extends State< AddQuestion> {
TextEditingController questionController = TextEditingController()。
@override.
Widget build(BuildContext context) {
return Scaffold(
身體。 中心(
孩子。Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextFormField(
controller: questionController,
裝飾。InputDecoration(
hintText。'description'。
hintStyle: TextStyle(
color: Colors.gray
),
邊框。大綱輸入邊框(
borderRadius: borderRadius.all(Radius.round(20.0))。
),
),),
AddUser(questionController.text),] 。
}}
當我呼叫這個類并列印輸出時,它回傳給我null。
使用AddUser(questionController.text);
我使用print(question)列印輸出,但它回傳空字串。
class AddUser extends StatelessWidget{
final String 問題。
AddUser(this.question)。
@override
Widget build(BuildContext context) {
//創建一個名為users的CollectionReference,參考Firestore的集合。
CollectionReference users = FirebaseFirestore.instance.collection('Questions').doc("cse").collection("CSE") 。
Future<void> addUser() {
print(question)。
//呼叫用戶的CollectionReference來添加一個新用戶。
return users
.add({
'question': question, //John Doe。
})
.then((value) => print("user added")
.catchError((error) => print("Failed to add user: $error"))。)
}
uj5u.com熱心網友回復:
發生的情況是,當它第一次建立螢屏時,你的AddQuestion widget questionController被設定為空字串,它被傳遞給AddUser()widget。
如果[controller]是空的,那么一個[TextEditingController]將被自動構建,其文本將被初始化為[initialValue]或空字串。
當你改變了questionController中的值時,你的AddUser()部件并不知道這些變化。通過添加 setState,它將重建整個 AddQuestion widget,并將新的值傳遞給你的 AddUser widget.
。試試這個例子來了解一下吧
class MyWidget extends StatefulWidget {
const MyWidget({Key? key}) : super(key: key);
State<MyWidget> createState() => _MyWidgetState()。
}
class _MyWidgetState extends State< MyWidget> {
TextEditingController questionController = TextEditingController()。
String? questionValue。
Widget build(BuildContext context) {
return Scaffold(
身體。中心(
孩子。Column(
children: [
TextFormField(
controller: questionController,
裝飾。InputDecoration(
hintText。'description'。
hintStyle: TextStyle(color: Colors.gray),
邊框。OutlineInputBorder(
borderRadius: borderRadius.all(Radius.round(20.0))。
),
),
),
SizedBox(高度:20)。
TextButton(
onPressed: () {
print("questionController: ${questionController.text}")。)
setState(() {
questionValue = questionController.text;
});
},
孩子。Text("SETSTATE BUTTON")。
),
SizedBox(高度:20)。
Text("questionValue: $questionValue")。)
SizedBox(高度:20)。
AddUser(questionController.text)。
],
),
),
);
}
}
class AddUser extends StatelessWidget{
final String question。
AddUser(this.question)。
Widget build(BuildContext context) {
return Text("question: $question")。)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/332600.html
標籤:
上一篇:在通過terraform創建AzureApp服務時,出現了一個錯誤這里不需要名為"zone_redundant"的引數。
下一篇:開關小部件總是回傳到關閉位置
