track_detail_controller.dart 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:get/get.dart';
  3. import 'package:get/get_core/src/get_main.dart';
  4. import 'package:injectable/injectable.dart';
  5. import 'package:location/base/base_controller.dart';
  6. import '../../../data/bean/atmob_track_point.dart';
  7. @injectable
  8. class TrackDetailController extends BaseController {
  9. static const int lineStart = 1;
  10. static const int lineEnd = 2;
  11. final List<AtmobTrackPoint> originPoints = [];
  12. final RxList<AtmobTrackPoint> pointList = RxList();
  13. final TextEditingController searchController = TextEditingController();
  14. final RxString _searchTxt = ''.obs;
  15. String get searchTxt => _searchTxt.value;
  16. @override
  17. void onInit() {
  18. super.onInit();
  19. final argument = Get.arguments;
  20. if (argument != null && argument is List<AtmobTrackPoint>) {
  21. if (argument.length >= 2) {
  22. argument.first.traceType = lineStart;
  23. argument.last.traceType = lineEnd;
  24. }
  25. originPoints.addAll(argument);
  26. }
  27. }
  28. @override
  29. void onReady() {
  30. super.onReady();
  31. _dealSearchList();
  32. }
  33. void back() {
  34. Get.back();
  35. }
  36. @override
  37. void onClose() {
  38. super.onClose();
  39. searchController.dispose();
  40. }
  41. void onSearch(String txt) {
  42. _searchTxt.value = txt;
  43. _dealSearchList();
  44. }
  45. void _dealSearchList() {
  46. if (_searchTxt.value.isEmpty) {
  47. pointList.clear();
  48. pointList.addAll(originPoints);
  49. } else {
  50. pointList.clear();
  51. pointList.addAll(originPoints.where((element) {
  52. return element.addr?.contains(_searchTxt.value) == true;
  53. }));
  54. }
  55. }
  56. void onClearSearchTxt() {
  57. searchController.clear();
  58. _searchTxt.value = '';
  59. _dealSearchList();
  60. }
  61. }