寫一個Flutter彩票客戶端--開獎列表

尤小紅發表於2019-06-13

寫一個Flutter彩票客戶端--開獎列表

資料來源 聚合資料

專案用到的庫 rxdart + dio + bloc

主要技術點:

  • 請求完資料的組合顯示(由於聚合資料是每一個彩種都是單個請求發);

  • 號碼的動態新增布局(遍歷資料動態新增布局資料,就像Android中動態addview一樣);

  • rxdart + dio 的網路請求;

  • rxdart + bloc 的狀態管理;

  • Stack + Positoned + Offstage(隱藏顯示)Widget的使用


資料的組合: Future.wait([各個彩種的請求介面])

Future<Response> lottery(String lotteryId) {
    return _dio.get(Api.LOTTERY_QUERY, queryParameters: {
      "lottery_id": lotteryId,
      "lottery_no": "",
      "key": Api.KEY
    });
  }

Future queryLotteryList_() {
    Future<List<Response>> resp = Future.wait([
      lottery(Const.SSQ),
      lottery(Const.DLT),
      lottery(Const.QLC),
      lottery(Const.QXC),
      lottery(Const.PLS),
      lottery(Const.PLW),
      lottery(Const.FCSD),
    ]);
    return resp;
  }
複製程式碼

號碼布局的實現(動態新增):

 Container(
  padding: EdgeInsets.only(top: 9),
  child: Row(
    children: info.lotteryRes.split(',').map((number) {
      ++numberIndex;
      return Container(
        margin: EdgeInsets.only(right: 4),
        child: ClipOval(
          child: Container(
            width: 30,
            height: 30,
            color: Utils.getLotteryItemColor(
                numberIndex, info.lotteryId),
            child: Center(
              child: Text(
                number,
                style: TextStyle(
                    color: Colors.white, fontSize: 14),
              ),
            ),
          ),
        ),
      );
    }).toList(),
  ),
),
複製程式碼

寫一個Flutter彩票客戶端--開獎列表

相關文章