|
|
@@ -1,21 +1,21 @@
|
|
|
+import 'package:flutter/material.dart';
|
|
|
import 'package:flutter_map/flutter_map.dart';
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
import 'package:get/get_core/src/get_main.dart';
|
|
|
import 'package:injectable/injectable.dart';
|
|
|
import 'package:location/base/base_controller.dart';
|
|
|
-import 'package:location/data/bean/location_info.dart';
|
|
|
import 'package:location/data/bean/track_days.dart';
|
|
|
import 'package:location/data/repositories/account_repository.dart';
|
|
|
import 'package:location/data/repositories/friends_repository.dart';
|
|
|
import 'package:location/data/repositories/track_repository.dart';
|
|
|
import 'package:location/handler/error_handler.dart';
|
|
|
import 'package:sliding_sheet2/sliding_sheet2.dart';
|
|
|
-import '../../data/bean/atmob_track_point.dart';
|
|
|
import '../../data/bean/user_info.dart';
|
|
|
|
|
|
@injectable
|
|
|
-class TrackController extends BaseController {
|
|
|
+class TrackController extends BaseController
|
|
|
+ with GetSingleTickerProviderStateMixin {
|
|
|
final Rxn<UserInfo> _userInfo = Rxn<UserInfo>();
|
|
|
|
|
|
UserInfo? get userInfo => _userInfo.value;
|
|
|
@@ -26,6 +26,12 @@ class TrackController extends BaseController {
|
|
|
|
|
|
final RxList<TrackDays> daysList = RxList<TrackDays>();
|
|
|
|
|
|
+ final Rxn<TabController> _tabController = Rxn<TabController>();
|
|
|
+
|
|
|
+ TabController? get tabController => _tabController.value;
|
|
|
+
|
|
|
+ final Rxn<TrackDays> currentTrackDay = Rxn();
|
|
|
+
|
|
|
final TrackRepository trackRepository;
|
|
|
final FriendsRepository friendsRepository;
|
|
|
final AccountRepository accountRepository;
|
|
|
@@ -52,11 +58,31 @@ class TrackController extends BaseController {
|
|
|
void _onRequestTrackDateList() {
|
|
|
trackRepository.getLocationTrackDays().then((list) {
|
|
|
daysList.assignAll(list);
|
|
|
+ _createTabController();
|
|
|
}).catchError((error) {
|
|
|
ErrorHandler.toastError(error);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ void _createTabController() {
|
|
|
+ tabController?.dispose();
|
|
|
+ final tab = TabController(
|
|
|
+ length: daysList.length,
|
|
|
+ vsync: this,
|
|
|
+ );
|
|
|
+ _tabController.value = tab;
|
|
|
+ tab.addListener(() {
|
|
|
+ if (tab.indexIsChanging == false) {
|
|
|
+ //控制请求当前页数据或者数据已有时跟换数据
|
|
|
+ mapController.clear();
|
|
|
+ currentTrackDay.value = daysList[tab.index];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ Future.delayed(Duration(milliseconds: 100), () {
|
|
|
+ currentTrackDay.value = daysList.isNotEmpty ? daysList[0] : null;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
///记录查看轨迹的次数
|
|
|
void _recordNumberTrajectoryViewed() {
|
|
|
if (accountRepository.memberStatusInfo.value?.trialed == true &&
|
|
|
@@ -83,4 +109,10 @@ class TrackController extends BaseController {
|
|
|
void back() {
|
|
|
Get.back();
|
|
|
}
|
|
|
+
|
|
|
+ @override
|
|
|
+ void onClose() {
|
|
|
+ super.onClose();
|
|
|
+ tabController?.dispose();
|
|
|
+ }
|
|
|
}
|