資料來源 聚合資料
專案用到的庫 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(),
),
),
複製程式碼