这是基于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.
 
 
 
 
 
 

56 lines
1.9 KiB

import 'package:get/get.dart';
import 'package:core/config/index.dart';
import 'package:core/services/config.state.service.dart';
import 'package:core/services/session.service.dart';
import 'package:core/services/signalr.service.dart';
import 'package:core/services/subscription.service.dart';
import 'package:core/tokens/index.dart';
import 'package:core/utils/index.dart';
import 'package:notifications/models/notification.dart';
class MainController extends GetxController {
final RxInt _pageIndex = RxInt(0);
int get currentIndex => _pageIndex.value;
SessionService get sessionService => Get.find();
ConfigStateService get configStateService => Get.find();
SubscriptionService get subscriptionService => Get.find(tag: NotificationTokens.consumer);
SignalrService get signalrService => Get.find(tag: NotificationTokens.producer);
@override
void onInit() async {
super.onInit();
subscriptionService.addOne(signalrService.onClose(logger.debug));
subscriptionService.addOne(signalrService.onReconnected(logger.debug));
subscriptionService.addOne(signalrService.onReconnecting(logger.debug));
subscriptionService.subscribe(
signalrService.subscribe(NotificationTokens.receiver),
(message) {
var notification = NotificationInfo.fromJson(message.data.first as dynamic);
logger.debug(notification);
},
);
sessionService.getToken$()
.listen((token) async {
if (token == null) {
await signalrService.stop();
} else {
await signalrService.start();
}
});
if (sessionService.currentLanguage.isNullOrWhiteSpace()) {
sessionService.setLanguage(Environment.current.defaultLanguage ?? 'en');
}
}
@override
void onClose() {
subscriptionService.closeAll()
.whenComplete(() => signalrService.stop());
super.onClose();
}
void setCurrentIndex(int index) {
_pageIndex.value = index;
}
}