|
|
@@ -11,6 +11,7 @@ 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/sdk/map/map_helper.dart';
|
|
|
+import 'package:location/utils/atmob_log.dart';
|
|
|
import 'package:location/utils/base_expand.dart';
|
|
|
import '../../dialog/add_friend_dialog.dart';
|
|
|
import '../../dialog/check_loation_permission_dialog.dart';
|
|
|
@@ -38,27 +39,37 @@ class MainController extends BaseController {
|
|
|
final MapController mapController = MapController();
|
|
|
|
|
|
StreamSubscription? mineLocationSubscription;
|
|
|
+ StreamSubscription? friendsListSubscription;
|
|
|
+ StreamSubscription? loginSubscription;
|
|
|
|
|
|
bool isFirstShowMineLocation = true;
|
|
|
|
|
|
@override
|
|
|
void onReady() {
|
|
|
super.onReady();
|
|
|
- friendsList.listen((list) {
|
|
|
- mapController.updateOrAddMarkers(
|
|
|
- Location2MarkerUtil.userInfoList2MarkerList(list, selectedFriend));
|
|
|
- });
|
|
|
+
|
|
|
AddFriendDialog.show(
|
|
|
onAddClick: () async {
|
|
|
await onAddFriendClick();
|
|
|
checkLocationPermissionCallback();
|
|
|
},
|
|
|
onNotAddDismiss: checkLocationPermissionCallback);
|
|
|
+
|
|
|
+ loginSubscription = accountRepository.isLogin.listen((isLogin) {
|
|
|
+ if (isLogin == false) {
|
|
|
+ _selectedFriend.value = null;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ friendsListSubscription = friendsList.listen((list) {
|
|
|
+ list.insert(0, mineUserInfo);
|
|
|
+ mapController.replaceAllMarkers(
|
|
|
+ Location2MarkerUtil.userInfoList2MarkerList(list, selectedFriend));
|
|
|
+ });
|
|
|
mineLocationSubscription =
|
|
|
accountRepository.mineUserInfo.value.lastLocation.listen((location) {
|
|
|
final mineInfo = accountRepository.mineUserInfo.value;
|
|
|
mapController.updateOrAddMarker(Location2MarkerUtil.userInfo2Marker(
|
|
|
- mineInfo, selectedFriend == mineInfo));
|
|
|
+ mineInfo, selectedFriend?.id == mineInfo.id));
|
|
|
if (isFirstShowMineLocation && location != null) {
|
|
|
isFirstShowMineLocation = false;
|
|
|
animateCameraToUser(mineInfo);
|
|
|
@@ -82,13 +93,13 @@ class MainController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- void onSelectClick(UserInfo mineLocation) {
|
|
|
+ void onSelectClick(UserInfo userInfo) {
|
|
|
UserInfo? oldInfo = _selectedFriend.value;
|
|
|
- _selectedFriend.value = mineLocation;
|
|
|
+ _selectedFriend.value = userInfo;
|
|
|
//修改地图选中
|
|
|
- _updateMapSelected(oldInfo, mineLocation);
|
|
|
+ _updateMapSelected(oldInfo, userInfo);
|
|
|
//移动到选中的位置
|
|
|
- animateCameraToUser(mineLocation);
|
|
|
+ animateCameraToUser(userInfo);
|
|
|
}
|
|
|
|
|
|
void _updateMapSelected(UserInfo? oldInfo, UserInfo newInfo) {
|
|
|
@@ -172,5 +183,7 @@ class MainController extends BaseController {
|
|
|
@override
|
|
|
void onClose() {
|
|
|
mineLocationSubscription?.cancel();
|
|
|
+ friendsListSubscription?.cancel();
|
|
|
+ loginSubscription?.cancel();
|
|
|
}
|
|
|
}
|