摘要:在第一頁添加一個通知監聽者,第三頁發送通知告知第一頁。在需要發送通知的頁面也繼續創建這個單例類,通過回調的方式傳遞值。
Flutter查閱了很多資料,暫時沒有發現類似Android/iOS的頁面廣播通知傳值,如有歡迎評論告知~
為何需要廣播通知傳值?假如有一個需求是這樣的,導航有三個頁面,第一頁有一個按鈕跳到第二頁,第二頁有一個按鈕跳到第三頁,第三頁有個按鈕來改變第一頁的背景色。這時候就可以通過通知傳值的方式。在第一頁添加一個通知監聽者,第三頁發送通知告知第一頁。
思路
我的思路是創建一個單例類,在你需要監聽的頁面創建這個監聽者。在需要發送通知的頁面也繼續創建這個單例類,通過回調的方式傳遞值。
代碼 創建一個單例類typedef GetObject = Function(dynamic object);
class NotificationCenter {
// 工廠模式
factory NotificationCenter() => _getInstance();
static NotificationCenter get instance => _getInstance();
static NotificationCenter _instance;
NotificationCenter._internal() {
// 初始化
}
static NotificationCenter _getInstance() {
if (_instance == null) {
_instance = new NotificationCenter._internal();
}
return _instance;
}
//創建Map來記錄名稱
Map postNameMap = Map();
GetObject getObject;
//添加監聽者方法
addObserver(String postName, object(dynamic object)) {
postNameMap[postName] = null;
getObject = object;
}
//發送通知傳值
postNotification(String postName, dynamic object) {
//檢索Map是否含有postName
if (postNameMap.containsKey(postName)) {
postNameMap[postName] = object;
getObject(postNameMap[postName]);
}
}
}
//添加監聽者
NotificationCenter.instance.addObserver("changColor", (object){
setState(() {
backColor = object;
});
});
//通知將第一頁背景色變成紅色
NotificationCenter.instance.postNotification("changColor", Colors.red);
最后
代碼可能寫的不好,只是提供一個自己的想法。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7203.html
摘要:我們參考小程序的設計思路進行了優化升級,為每一個需要特有化配置的頁面添加一個格式的配置文件,配置文件包括導航欄的配置頁面級別的配置跳轉的配置等,將配置工程化標準化。設置導航欄按鈕包含按鈕樣式的數組通過完成按鈕事件的回調。一、背景1.為什么是Weex在公司快速發展的大環境下,App的更新迭代高速、高頻,技術團隊平均兩周便可誕生一款中型App,但App團隊只有6個人(iOS 、Android各3...
閱讀 2578·2021-09-26 10:13
閱讀 5985·2021-09-08 10:46
閱讀 692·2019-08-30 15:53
閱讀 2966·2019-08-29 16:13
閱讀 2762·2019-08-26 12:23
閱讀 3485·2019-08-26 11:24
閱讀 1093·2019-08-23 18:09
閱讀 1033·2019-08-23 17:08