颤振/飞镖重新加载小部件并发送新数据



我想在小部件中有一个文本字段,您可以在其中搜索某些内容。如果字符串发生更改,则应重新加载小部件并发送新数据。 我已经读过很多关于回调函数的东西,不幸的是我在颤振时不太明白它。 您将在下面找到示例代码: 感谢您的帮助

class _HomepageState extends State<Homepage> {
String data;
String day;
...
TextField(
onChanged: (str){
setState(() {
data = str;
});
},
),
...
Nextpage(data: data, day: day,)
...
}
class Nextpage extends StatefulWidget {
final String data;
final String day;
Nextpage({this.data, this.day});
...
print(widget.data);
...
}

下面是一个示例,您有一个TextField,当其输入更改时,文本将显示在不同的Text小部件上(您可以复制它并将其粘贴到DartPad以查看它是如何工作的(。

import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String myText = '';
TextField buildTextField() {
return TextField(
decoration: InputDecoration(
labelText: 'Enter Text',
),
onChanged: (changedText) => updateText(changedText),
onEditingComplete: () => print("complete"),
);
}
void updateText(newText) {
setState(() {
myText = newText;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Example",
theme: ThemeData(primarySwatch: Colors.deepPurple),
home: Scaffold(
body: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildTextField(),
Text(myText),
]),
),
));
}
}

回调是代码的这一部分:

onChanged: (changedText) => updateText(changedText)

并且回调函数是updateText

这是回调的另一个示例,其中在编辑完成后调用print函数(回调函数(。

onEditingComplete: () => print("complete")

我希望这有所帮助。