checked_cp_record.dart 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import 'package:flutter/material.dart';
  2. import 'package:trackoffical_app/model/m_control_point.dart';
  3. import 'package:trackoffical_app/utils.dart';
  4. class CheckedCPRecord extends StatelessWidget{
  5. const CheckedCPRecord({
  6. super.key,
  7. required this.data
  8. });
  9. final List<MControlPoint> data;
  10. @override
  11. Widget build(BuildContext context) {
  12. return ListView.builder(
  13. itemCount: data.length,
  14. itemBuilder: (context, index){
  15. return _elem(context, data[index]);
  16. }
  17. );
  18. }
  19. }
  20. Widget _elem(BuildContext context, MControlPoint data){
  21. const disableColor = Color(0xffaaaaaa);
  22. const enableColor = Color(0xff333333);
  23. var result = '已完成';
  24. Color resultColor = Colors.green;
  25. final color = data.isUnchecked? disableColor: enableColor;
  26. Color? iconColor;
  27. var textTime = data.checkAfterPrev.toMinSecondString();
  28. var imageSrc = 'assets/images/ic_cp.png';
  29. if(data.isStart){
  30. imageSrc = 'assets/images/ic_cp_start.png';
  31. textTime = '';
  32. }
  33. if(data.isFinish){
  34. imageSrc = 'assets/images/ic_cp_finish_uncheck.png';
  35. textTime = '';
  36. }
  37. if(!data.isSuccess){
  38. result = '错误';
  39. resultColor = const Color(0xffff6203);
  40. }
  41. if(data.isUnchecked){
  42. iconColor = disableColor;
  43. result = '未打点';
  44. resultColor = disableColor;
  45. textTime='';
  46. }
  47. var text = data.snString.isNotEmpty? '${data.snString}点': '';
  48. if(data.areaId.isNotEmpty){
  49. text += '(${data.areaId})';
  50. }
  51. final style = TextStyle(
  52. fontSize: 15.24, fontWeight: FontWeight.w500, color: color);
  53. return Padding(padding: const EdgeInsets.only(bottom: 12), child: Row(
  54. crossAxisAlignment: CrossAxisAlignment.center,
  55. children: [
  56. Image.asset(imageSrc, color: iconColor, height: 21.19, width: 21.19),
  57. const SizedBox(width: 6),
  58. Expanded(flex:4, child: Text(text, style: style, textAlign: TextAlign.start, maxLines: 1)),
  59. Expanded(flex:3, child: Text(textTime, style: style, textAlign: TextAlign.start, maxLines: 1)),
  60. SizedBox(
  61. width: 60,
  62. child: Text(result, style: style.copyWith(fontSize: 17.42, color: resultColor))
  63. ),
  64. ],
  65. )) ;
  66. }