flutter之進度條

flutter中進度條中的線性進度條,實現其3秒走完的功能搞了一段時間,主要是要使用await方法等待一段時間纔去改變其參數.

for(int i = 1; i <= 30; i++) {
        // ignore: close_sinks
        await Socket.connect("1.1.1.1", 8888, timeout: new Duration(milliseconds: 100)).catchError(
                (e) { isShowProgressBar = true; });
        String pText = "正在更新$version版本,請等待";
        switch(i%4) {
          case 1:
            pText = "正在更新$version版本,請等待.";
            break;
          case 2:
            pText = "正在更新$version版本,請等待..";
            break;
          case 3:
            pText = "正在更新$version版本,請等待...";
            break;
        }
        setState(() {
          progressBar = Center(
            child: Container(
              margin: const EdgeInsets.fromLTRB(36.0, 0.0, 36.0, 60.0),
              child: new Column(
                verticalDirection: VerticalDirection.up,
                children: <Widget> [
                  _getNameText(context, pText),
                  new LinearProgressIndicator(value: i/30),
                ]
              ),
            ),
          );
        });
      }

其中1.1.1.1是隨便填的一個有效的ip,這樣就必須等待await的結果才改變,之前一直不能原因是異步的機制導致邏輯雖然正確但是卻不能實現想要的效果。我這使用socket連接設置timeout時間,還可以自己寫返回Future的方法去寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章