簡體   English   中英

如何使用 Flutter MVC 設計模式

[英]How to use Flutter MVC design pattern

我正在使用 MVC 設計模式設計一個帶有按鈕和文本的應用程序。

  • 每個按鈕就像一個計數器。 用戶點擊它,面值減少。
  • 還有一個“+”和“-”按鈕可以將文本從 1 更新到 10(在該范圍內)。

我想要發生的是當點擊 +/- 時我想更新按鈕上的數字。 例如,讓我們把它想象成一副紙牌,每個面值的計數為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM