如何從 Y 螢屏上的按鈕更改 X 螢屏上按鈕的可見性屬性。
uj5u.com熱心網友回復:
一種流行的方法(使用provider架構)是這樣的:
定義一個provider處理所有邏輯并保存資料的方法:
class MyProvider extends ChangeNotifier {
bool showMyButton = false;
MyProvider() {}
void showButton() {
showMyButton = true;
// This line notifies all consumers
notifyListeners();
}
void refresh() {
notifyListeners();
}
}
要訪問provider您需要注冊的任何地方:
void main() => runApp(
// You can wrap multiple providers like this
MultiProvider(
providers: [
ChangeNotifierProvider<MyProvider>(create: (_) => MyProvider()),
],
child: const MyApp(),
),
);
在要控制的按鈕上,您可以使用 aConsumer來收聽providers值:
Consumer<MyProvider>(builder: (_, model, __) {
return Visibility(
visible: model.showMyButton,
child: MaterialButton(...),
);
})
現在,在您的第二個螢屏中,您可以通過以下方式訪問該提供商:
Provider.of<MyProvider>(context, listen: false)
.showButton();
但是,notifyListener從screen Yto回傳時,您可能需要再呼叫一次screen X:
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ScreenY()));
Provider.of<MyProvider>(context, listen: false).refresh();
請記住,還有更多內容,provider請查看他們的官方檔案。
還要注意這樣一個事實,即有更簡單的方法可以在螢屏之間傳遞資料,但您通常會需要一種更好的方式來管理狀態并provider提供這種方式;)
uj5u.com熱心網友回復:
您可以通過導航的推送和彈出來傳遞資料。或者使用 ChangeNotifier 類來輕松通知按鈕的狀態。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/395296.html
標籤:扑
上一篇:如何在Flutter中添加按鈕
下一篇:如何在構建器中使用提供程式?撲
