这是我尝试执行的代码。在MyTextField类中,我提到了listen属性为false,但是一旦我在文本字段中键入内容,我就可以在我的应用栏和文本小部件中看到更改。这样输出的原因可能是什么。我希望当listen属性为false时,它不应监听任何内容,但只有将其提及为false后,我才能监听更改。没有listen属性,当我在文本字段中输入内容时,我的应用程序栏和文本小部件中找不到任何更改
class MyApp extends StatelessWidget {
final String data = 'Secret message';
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context)=> Data(),
child: MaterialApp(
home: Scaffold(
appBar: AppBar(
title: MyText(),
),
body: Level1(),
),
),
);
}
}
class Level1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child:Level2(),
);
}
}
class Level2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Column(children: [
MyTextField(),
Level3()
],),
);
}
}
class Level3 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Text(Provider.of<Data>(context).data),
);
}
}
class MyText extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text(
Provider.of<Data>(context,listen: false).data
);
}
}
class MyTextField extends StatelessWidget {
@override
Widget build(BuildContext context) {
return TextField(
onChanged: (newText){
**Provider.of<Data>(context,listen: false).changeString(newText);**
},
);
}
}
class Data extends ChangeNotifier{
String data = 'Dummy data';
void changeString(String newString){
data = newString;
notifyListeners();
}
}