[英]How to use Flutter MVC design pattern
我正在使用 MVC 設計模式設計一個帶有按鈕和文本的應用程序。
我想要發生的是當點擊 +/- 時我想更新按鈕上的數字。 例如,讓我們把它想象成一副紙牌,每個面值的計數為 4,當我增加我的牌組(使用 +/- 按鈕)時,我希望該面值計數也增加。 所以,如果有 2 副牌,那么每個面值應該有 8 張牌,如果有 3 副牌,每個面值應該有 12 張牌。 單擊顯示面值的按鈕時,該計數應遞減,直到達到零。
我嘗試在Model 中執行以下操作:
static int get faceCard2 => _faceCard2 * _deckCount;
static int decrementFaceCard2() => _faceCard2 > 0 ? --_faceCard2 : 0;
它起作用了,但是當您單擊面卡按鈕時,它會減少甲板數。 因此,例如,甲板數 = 2,面數為 8,然后您單擊該按鈕,它會減少 2 而不是 1。這是預期的......
我得到了遞增和遞減的工作,但如何乘以甲板數?
我的模型具有以下內容:
static int _faceCard2 = 4;
static int _deckCount = 1;
static int get faceCard2 => _faceCard2;
static int decrementFaceCard2() => _faceCard2 > 0 ? --_faceCard2 : 0;
// Deck Count changes the card count
static int get deckCount => _deckCount;
static int incrementDeckCount() => _deckCount++;
static int decrementDeckCount() => _deckCount > 1 ? --_deckCount : 1;
我的控制器有以下內容:
static int get faceCard2 => ManualCountModel.faceCard2;
static void decrementFaceCard2() {
ManualCountModel.decrementFaceCard2();
}
//Deck counting
static int get deckCount => ManualCountModel.deckCount;
static void incrementDeckCount() {
ManualCountModel.incrementDeckCount();
}
static void decrementDeckCount() {
ManualCountModel.decrementDeckCount();
}
我的觀點有以下幾點:
elevatedButton(
onClick: () {
setState(
ManualCountController.decrementFaceCard2,
);
},
numText: '2',//face card
denumText: '${ManualCountController.faceCard2}', //face card count that changes when clicked on and when deck count changes
),
提前謝謝你的幫助!
想通了,開始真正喜歡 MVC 的簡單東西。 我曾經將所有計算留在我的有狀態小部件中,我知道這不是正確的編程。 將邏輯與視圖分開有很大的好處,例如結構清晰。 它會提高性能嗎? 我只有在我的應用程序完成后才知道!
對於那些仍在了解 MVC 模式的人,這是我的解決方案:
所有計算都在模型文件中完成。
當用戶增加牌組數時獲取卡片數(我在這里只顯示牌組中的 2):
static int get deckCount => _deckCount;
static int incrementDeckCount() {
_deckCount++;
_faceCard2 = 4 * _deckCount;
return _deckCount;
}
如此簡單,如此簡單......問這個問題很愚蠢,但MVC對我來說是新的......
控制器(就像在我的問題中一樣):
static int get deckCount => ManualCountModel.deckCount;
static void incrementDeckCount() {
ManualCountModel.incrementDeckCount();
}
視圖(甚至更簡單):
setState(ManualCountController.incrementDeckCount);
我希望有一天這可以幫助某人。
快樂編碼!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.