|
|
@@ -10,8 +10,11 @@ import 'package:location/data/consts/constants.dart';
|
|
|
import 'package:location/data/repositories/account_repository.dart';
|
|
|
import 'package:location/data/repositories/friends_repository.dart';
|
|
|
import 'package:flutter_map/flutter_map.dart';
|
|
|
+import 'package:location/handler/error_handler.dart';
|
|
|
+import 'package:location/resource/string.gen.dart';
|
|
|
import 'package:location/sdk/map/map_helper.dart';
|
|
|
import 'package:location/utils/base_expand.dart';
|
|
|
+import 'package:location/utils/toast_util.dart';
|
|
|
import '../../socket/atmob_location_client.dart';
|
|
|
import '../../dialog/add_friend_dialog.dart';
|
|
|
import '../../dialog/check_loation_permission_dialog.dart';
|
|
|
@@ -44,6 +47,7 @@ class MainController extends BaseController {
|
|
|
StreamSubscription? loginSubscription;
|
|
|
|
|
|
bool isFirstShowMineLocation = true;
|
|
|
+ DateTime _lastRefreshTime = DateTime.fromMillisecondsSinceEpoch(0);
|
|
|
|
|
|
@override
|
|
|
void onReady() {
|
|
|
@@ -155,6 +159,26 @@ class MainController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ void onRefreshFriendLocationClick() {
|
|
|
+ final now = DateTime.now();
|
|
|
+ final secondsSinceLastRefresh = now.difference(_lastRefreshTime).inSeconds;
|
|
|
+
|
|
|
+ if (secondsSinceLastRefresh < 10) {
|
|
|
+ final remainingSeconds = 10 - secondsSinceLastRefresh;
|
|
|
+ ToastUtil.show('请等待 $remainingSeconds 秒后重试');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ _lastRefreshTime = now;
|
|
|
+
|
|
|
+ friendsRepository.refreshFriends().then((_) {
|
|
|
+ ToastUtil.show(StringName.refreshFriendDataSuccess);
|
|
|
+ }).catchError((error) {
|
|
|
+ ErrorHandler.toastError(error);
|
|
|
+ _lastRefreshTime = DateTime.fromMillisecondsSinceEpoch(0);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
void _requestLocationPermission() async {
|
|
|
bool isGranted = await LocationPermissionUtil.requestLocationPermission();
|
|
|
_showLocationAlways();
|