import 'package:flutter/material.dart'; import 'package:trackoffical_app/model/settlement.dart'; import 'package:trackoffical_app/pb.dart' as pb; import 'package:trackoffical_app/utils.dart'; class CheckPointRecord extends StatelessWidget{ const CheckPointRecord({ super.key, required this.data }); final Settlement data; @override Widget build(BuildContext context) { final checkedSortedList = data.save.checkedSortedList; return ListView.builder( itemCount: checkedSortedList.length, itemBuilder: (BuildContext context, int index){ final backColor = index % 2 == 0 ? const Color(0xfff8f8f8) : Colors.white; final data = checkedSortedList[index]; pb.GameSaveControlPoint? preData; if(index > 0){ preData = checkedSortedList[index-1]; } var icResName = data.isCheckSuccess ? 'ic_point_ok.png' : 'ic_point_fail.png'; final beginTime = checkedSortedList.first.checkAfterStart.toDuration(); var checkTime = data.checkAfterStart.toDuration() - (preData?.checkAfterStart.toDuration()??beginTime); var checkTimeStr = '+${checkTime.toAppString()}'; if (isPointStart(this.data.data, data) && data.isCheckSuccess) { icResName = 'ic_point_start.png'; checkTimeStr = this.data.save.startAt.toDateTime(toLocal: true) .add(data.checkAfterStart.toDuration()).toAppStringNoDate(); } if (isPointFinish(this.data.data, data)) { icResName = 'ic_point_finish.png'; checkTimeStr = this.data.save.startAt.toDateTime(toLocal: true) .add(data.checkAfterStart.toDuration()).toAppStringNoDate(); } return Container( width: double.infinity, color: backColor, padding: const EdgeInsets.fromLTRB(13, 5, 26, 5), child: Row( children: [ Image.asset( 'assets/images/$icResName', height: 18, width: 18, ), const SizedBox(width: 20,), Expanded(child: Text(gameSaveControlPointFindInProject(this.data.data, data).sn)), Text(checkTimeStr) ], )); }); } }