簡體   English   中英

使用提供程序在 flutter 中按下時更改顏色

[英]Change color when onPressed in flutter using Provider

如何使用 Provider State Management 而不是setState()更改顏色

我有一個按鈕,默認顏色為黑色 - 第一次點擊顏色為藍色,第二次點擊顏色為紅色,第三次點擊顏色為綠色第四次點擊顏色為黑色(默認)或紫色我如何使用 Provider

Model:

class DriverStatusState extends ChangeNotifier {
  var numberOfClicks = 0;
  Color buttonColor = Colors.red;

  void changeColor() {
    numberOfClicks++;
    mapNumerOfClicksToColor(numberOfClicks);
    notifyListeners();
  }

  mapNumerOfClicksToColor(int num) {
    switch (num) {
      case 1:
        {
          buttonColor = Colors.orange;
        }
        break;
      case 2:
        {
          buttonColor = Colors.green;
        }
        break;
      default:
        {
          buttonColor = Colors.red;
        }
        break;
    }
    notifyListeners();
  }
}

小部件:

Consumer<DriverStatusState>(
            builder: (context, state, _) => ElevatedButton(
              child: Text('press me'),
              onPressed: () {
                state.mapNumerOfClicksToColor(0);
                     },
              style: ElevatedButton.styleFrom(primary: state.buttonColor),
            ),
          ),

您需要將點擊次數保存在一個變量中,每次單擊按鈕時,您都會增加變量,並根據新值更改顏色。

假設您熟悉 Provider,您將在 model 中執行以下操作:

var numberOfClicks = 0;
Color buttonColor = Colors.white;


void changeColor(){
   numberOfClicks++;
   mapNumerOfClicksToColor(numberOfClicks);
   notifyListeners();
}

mapNumerOfClicksToColor(int num){
  switch(num){
    case 1:
       buttonColor = Colors.Blue;
    case 2:
        ....
    case 3:
        ....
  }
 notifyListeners();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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