Это был код, который я пытался выполнить. В классе MyTextField я упомянул свойство listen в false, но как только я что-то наберу в текстовом поле, я смогу увидеть изменения в моей панели приложений и в текстовом виджете. В чем может быть причина такого выхода. Я надеюсь, что когда свойство listen имеет значение false, оно не должно ничего слушать, но я могу прослушивать изменения только после упоминания false. Без свойства прослушивания я не смог найти никаких изменений в панели приложения и текстовом виджете, когда вводил текстовое поле
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();
}
}