У меня есть виджет экрана и пользовательский виджет. Я хочу изменить значение экранного виджета, когда нажата кнопка моего пользовательского виджета. Просто чтобы показать пример:
Это виджет MyScreen, который использует CustomWidget в качестве дочернего элемента:
import './widgets/my_custom_widget.dart';
class MyScreen extends StatefulWidget {
@override
_MyScreen createState() => _MyScreenState();
}
class _MyScreen extends State<MyScreen> {
bool isChildButtonPressed = false;
@override
Widget build(BuildContext context) {
return Container(
child:MyCustomWidget());
}
}
Это MyCustomWidget
class MyCustomWidget extends StatefulWidget {
@override
_MyCustomWidget createState() => _MyCustomWidget();
}
class _MyCustomWidget extends State<MyCustomWidget> {
@override
Widget build(BuildContext context) {
return Container(
width:200,
height:200,
child: Row(children:[
FlatButton(child:Text("I am child button"),onPressed:(){
//what should I do here to change MyScreen isChildButtonPressed to true?
}),
]
)
);
}
}
Код выше просто пример того, чего я хочу достичь, но в моем приложении у меня есть несколько дочерних виджетов с несколькими кнопками, и я хочу сохранить виджет в отдельном файле, но я хочу изменить некоторые переменные родительского виджета, когда кнопка дочернего виджета нажат.
Что я могу сделать, это объявить переменные родителя как глобальные переменные, а затем использовать ValueNotifier, но я не думаю, что это хороший способ решить эту проблему, поскольку мне нужны только эти переменные на одном экране, а не все приложение.
Я не думаю, что смогу использовать пакет Provider, потому что он перестраивает только дочерние виджеты, а не родительские.
Так что вы предлагаете?
Спасибо