这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

50 lines
1.3 KiB

import 'package:core/models/auth.dart';
import 'package:core/services/session.service.dart';
import 'package:get/get.dart';
import 'state.dart';
class CenterController extends GetxController {
SessionService get sessionService => Get.find();
final Rx<CenterState> _state = Rx<CenterState>(CenterState(isAuthenticated: false));
CenterState get state => _state.value;
bool get isAuthenticated => state.isAuthenticated;
UserProfile? get profile => state.profile;
Token? get token => state.token;
@override
void onInit() {
super.onInit();
sessionService.getProfile$()
.listen((event) {
_state.update((val) {
val?.profile = event;
val?.isAuthenticated = sessionService.isAuthenticated;
});
});
sessionService.getToken$()
.listen((event) {
_state.update((val) {
val?.token = event;
});
});
}
String get userName {
return !isAuthenticated ? 'Label:Anonymous'.tr : profile!.userName;
}
String get phoneNumber {
return !isAuthenticated ? '' : profile!.phoneNumber ?? 'Label:PhoneNumberNotBound'.tr;
}
void redirectToRoute(String route) {
Get.toNamed(route);
}
void changeLocale(String locale) {
sessionService.setLanguage(locale);
}
}