我有一个小部件,其文本需要根据两个 TextField 中输入的内容进行更新。在这种情况下(以及一般情况下)收听两个来源的正确方法是什么?
我刚刚写了两个类:
class MyTextField extends StatelessWidget {
const MyTextField({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return TextField(
onChanged: (newData) => context.read<Data>().changeString(newData),
);
}
}
MyTextField2同样。
小HomePage部件:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
print('build HomePage');
return Scaffold(
appBar: AppBar(
title: Container(child: Text(context.watch<Data>().getData),),
),
body: Center(
child: Column(
children: [
MyTextField(),
MyTextField2(),
Text(context.watch<Data>().getData),
],
),
)
);
}
}
数据类:
class Data with ChangeNotifier
{
String _data = 'some text';
String get getData => _data;
void changeString(String newString)
{
_data = newString;
notifyListeners();
}
}
我是否正确,因为HomePage小部件正在收听两个来源?如果同时更改两者会发生冲突TextField吗?

