check_point_record2.dart 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:trackoffical_app/pb.dart' as pb;
  4. import 'package:trackoffical_app/utils.dart';
  5. class CheckPointRecord extends StatelessWidget{
  6. const CheckPointRecord({
  7. super.key,
  8. required this.data
  9. });
  10. final pb.GameDetailReply data;
  11. @override
  12. Widget build(BuildContext context) {
  13. final checkedSortedList = data.checkedSortedList;
  14. return ListView.builder(
  15. itemCount: checkedSortedList.length,
  16. itemBuilder: (BuildContext context, int index){
  17. final backColor = index % 2 == 0 ? const Color(0xfff8f8f8) : Colors.white;
  18. final data = checkedSortedList[index];
  19. const leadingHeight= 15.24;
  20. Widget leading;
  21. var checkTimeStr = '';
  22. switch(data.cType){
  23. case pb.CType.BeginType:
  24. leading = Image.asset(
  25. 'assets/images/ic_point_start.png',
  26. height: leadingHeight, fit: BoxFit.fitHeight);
  27. checkTimeStr = data.punchTime.toDateTime(toLocal: true).toAppStringNoDate();
  28. break;
  29. case pb.CType.EndType:
  30. leading = Image.asset(
  31. 'assets/images/ic_point_finish.png',
  32. height: leadingHeight, fit: BoxFit.fitHeight);
  33. checkTimeStr = data.punchTime.toDateTime(toLocal: true).toAppStringNoDate();
  34. break;
  35. default:
  36. checkTimeStr ='+${data.checkAfterLast .toDuration().toAppString()}';
  37. if(data.isCheckSuccess){
  38. leading =Text(data.orderNo.toString(), style:
  39. context.textTheme.bodyLarge?.copyWith(
  40. color: const Color(0xff00ae7f),
  41. fontSize: 14,
  42. ),textAlign: TextAlign.center
  43. ) ;
  44. }else{
  45. leading = Image.asset(
  46. 'assets/images/ic_point_fail.png',
  47. height: leadingHeight, fit: BoxFit.fitHeight);
  48. }
  49. }
  50. return Container(
  51. width: double.infinity,
  52. color: backColor,
  53. padding: const EdgeInsets.fromLTRB(13, 5, 26, 5),
  54. child: Row(
  55. children: [
  56. Container(
  57. width: 24,
  58. alignment: Alignment.center,
  59. child: leading,
  60. ),
  61. const SizedBox(width: 20,),
  62. Expanded(child: Text(data.sn)),
  63. Text(checkTimeStr)
  64. ],
  65. ));
  66. });
  67. }
  68. }