first
This commit is contained in:
129
lib/common/manager/app_manager.dart
Normal file
129
lib/common/manager/app_manager.dart
Normal file
@@ -0,0 +1,129 @@
|
||||
import 'package:cashier_reserve/common/print/print.dart';
|
||||
import 'package:cashier_reserve/common/push/push.dart';
|
||||
import 'package:cashier_reserve/data_model/login/login_result.dart';
|
||||
import 'package:cashier_reserve/login/login_view.dart';
|
||||
import 'package:cashier_reserve/model/reserve_model.dart';
|
||||
import 'package:cashier_reserve/model/version_model.dart';
|
||||
import 'package:cashier_reserve/update_version/update_version_view.dart';
|
||||
import 'package:easy_refresh/easy_refresh.dart';
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
|
||||
import '../base/ui.dart';
|
||||
import '../channel/channel_event.dart';
|
||||
import '../utils/func_tools.dart';
|
||||
import 'hive_manager.dart';
|
||||
|
||||
class AppManager {
|
||||
static BuildContext? globalContext;
|
||||
static bool _isAlertLogin = false;
|
||||
|
||||
static String _smsContent = "";
|
||||
|
||||
static Future<void> initThirdPackage() async {
|
||||
MyEventChannel.startListener();
|
||||
|
||||
await HiveManager.initHive();
|
||||
|
||||
EasyRefresh.defaultHeaderBuilder = () => const ClassicHeader(
|
||||
dragText: "下拉刷新",
|
||||
readyText: "释放刷新",
|
||||
armedText: "正在刷新",
|
||||
processingText: "正在刷新",
|
||||
processedText: "刷新完成",
|
||||
noMoreText: "没有更多数据了",
|
||||
failedText: "刷新失败",
|
||||
messageText: "上次刷新时间:%T",
|
||||
showText: true,
|
||||
showMessage: true,
|
||||
iconDimension: 30,
|
||||
spacing: 10,
|
||||
);
|
||||
}
|
||||
|
||||
static void setGlobalContext(BuildContext context) {
|
||||
globalContext = context;
|
||||
}
|
||||
|
||||
static bool isLogin() {
|
||||
String token = HiveManager.getUserToken();
|
||||
if (isEmptyString(token)) {
|
||||
gotoLogin();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static void gotoLogin() {
|
||||
if (_isAlertLogin) {
|
||||
return;
|
||||
}
|
||||
_isAlertLogin = true;
|
||||
|
||||
while (Navigator.of(globalContext!).canPop()) {
|
||||
Navigator.of(globalContext!).pop();
|
||||
}
|
||||
|
||||
YJPush.presentWidget(globalContext!, const LoginView());
|
||||
}
|
||||
|
||||
static void checkAppVersion() async {
|
||||
final res = await VersionModel.requestNewVersionInfo();
|
||||
yjPrint(res);
|
||||
|
||||
if (res == null || res.version == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
yjPrint("version == ${packageInfo.version}");
|
||||
|
||||
List<String> serverList = res.version!.split(".");
|
||||
List<String> localList = packageInfo.version.split(".");
|
||||
|
||||
if (serverList.length != 3 || localList.length != 3) {
|
||||
return;
|
||||
}
|
||||
|
||||
int serverVersion = int.parse(serverList[0]) * 10000 + int.parse(serverList[1]) * 100 + int.parse(serverList[2]);
|
||||
int localVersion = int.parse(localList[0]) * 10000 + int.parse(localList[1]) * 100 + int.parse(localList[2]);
|
||||
|
||||
if (serverVersion <= localVersion) {
|
||||
return;
|
||||
}
|
||||
|
||||
yjPrint("serverVersion == $serverVersion, localVersion == $localVersion");
|
||||
|
||||
YJPush.presentWidget(globalContext!, UpdateVersionView(versionModel: res,));
|
||||
}
|
||||
|
||||
static void disposeLoginWidget() {
|
||||
_isAlertLogin = false;
|
||||
}
|
||||
|
||||
static bool isShowLoginView() {
|
||||
return _isAlertLogin;
|
||||
}
|
||||
|
||||
static String getUserToken() {
|
||||
return HiveManager.getUserToken();
|
||||
}
|
||||
|
||||
static void loginSuccess(LoginResult? r) {
|
||||
HiveManager.setUserToken(r?.token ?? '');
|
||||
HiveManager.setShopId((r?.shopId ?? '').toString());
|
||||
HiveManager.setShopName(r?.shopName ?? '');
|
||||
HiveManager.setShopLogo(r?.logo ?? '');
|
||||
HiveManager.setUserInfo(r?.user?.toString() ?? '');
|
||||
|
||||
disposeLoginWidget();
|
||||
Navigator.of(globalContext!).pop();
|
||||
}
|
||||
|
||||
static Future<String> loadReserveSms() async {
|
||||
if (_smsContent.isNotEmpty) {
|
||||
return _smsContent;
|
||||
}
|
||||
_smsContent = await ReserveModel.getReserveSms();
|
||||
return _smsContent;
|
||||
}
|
||||
}
|
||||
69
lib/common/manager/event_manager.dart
Normal file
69
lib/common/manager/event_manager.dart
Normal file
@@ -0,0 +1,69 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:cashier_reserve/common/channel/model/call_log_model.dart';
|
||||
import 'package:cashier_reserve/common/channel/model/call_status_change_model.dart';
|
||||
import 'package:event_bus/event_bus.dart';
|
||||
|
||||
|
||||
class EventManager {
|
||||
static EventBus? _eventBus;
|
||||
|
||||
static final Map<dynamic, List<StreamSubscription>> _eventMap = {};
|
||||
|
||||
static EventBus? get eventBus => getEventBus();
|
||||
|
||||
static EventBus? getEventBus() {
|
||||
_eventBus ??= EventBus();
|
||||
return _eventBus;
|
||||
}
|
||||
|
||||
static void postEvent(MyEvent event) {
|
||||
getEventBus()!.fire(event);
|
||||
}
|
||||
|
||||
static void addListener<T>(dynamic widget, void Function(T event) onData) {
|
||||
StreamSubscription event = EventManager.eventBus!.on<T>().listen((T e) {
|
||||
onData(e);
|
||||
});
|
||||
List<StreamSubscription>? list = _eventMap[widget];
|
||||
list ??= [];
|
||||
list.add(event);
|
||||
_eventMap[widget] = list;
|
||||
}
|
||||
|
||||
static void cancelListener(dynamic widget) {
|
||||
List<StreamSubscription>? list = _eventMap[widget];
|
||||
if (list == null) {
|
||||
return;
|
||||
}
|
||||
for (var event in list) {
|
||||
event.cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MyEvent {
|
||||
String name = '';
|
||||
}
|
||||
|
||||
class GetCallLogEvent extends MyEvent {
|
||||
List<CallLogModel> callLogs;
|
||||
bool isLoadMore = false;
|
||||
bool isSuccess = false;
|
||||
|
||||
GetCallLogEvent({this.callLogs = const [], this.isLoadMore = false, this.isSuccess = false});
|
||||
}
|
||||
|
||||
class CallStatusChangeEvent extends MyEvent {
|
||||
/// state = IncomingNumberReceived 来电接听
|
||||
/// state = OutGoing 呼出
|
||||
/// state = End 通话结束
|
||||
/// state = Incoming 来电
|
||||
CallStatusChangeModel model;
|
||||
|
||||
CallStatusChangeEvent({required this.model});
|
||||
}
|
||||
|
||||
class CallReceivedEvent extends MyEvent {
|
||||
CallReceivedEvent();
|
||||
}
|
||||
61
lib/common/manager/hive_manager.dart
Normal file
61
lib/common/manager/hive_manager.dart
Normal file
@@ -0,0 +1,61 @@
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
|
||||
class HiveManager {
|
||||
static Box? _userInfoBox;
|
||||
|
||||
static Future<void> initHive() async {
|
||||
final dir = await getApplicationDocumentsDirectory();
|
||||
Hive.defaultDirectory = dir.path;
|
||||
|
||||
_userInfoBox = Hive.box();
|
||||
}
|
||||
|
||||
static void clearLoginInfo() {
|
||||
_userInfoBox?.delete('token');
|
||||
_userInfoBox?.delete('shopId');
|
||||
_userInfoBox?.delete('shopName');
|
||||
_userInfoBox?.delete('shopLogo');
|
||||
_userInfoBox?.delete('userInfo');
|
||||
}
|
||||
|
||||
static void setUserToken(String token) {
|
||||
_userInfoBox?.put('token', token);
|
||||
}
|
||||
|
||||
static String getUserToken() {
|
||||
return _userInfoBox?.get('token') ?? '';
|
||||
}
|
||||
|
||||
static void setShopId(String shopId) {
|
||||
_userInfoBox?.put('shopId', shopId);
|
||||
}
|
||||
|
||||
static String getShopId() {
|
||||
return _userInfoBox?.get('shopId') ?? '';
|
||||
}
|
||||
|
||||
static void setShopName(String shopName) {
|
||||
_userInfoBox?.put('shopName', shopName);
|
||||
}
|
||||
|
||||
static String getShopName() {
|
||||
return _userInfoBox?.get('shopName') ?? '';
|
||||
}
|
||||
|
||||
static void setShopLogo(String shopLogo) {
|
||||
_userInfoBox?.put('shopLogo', shopLogo);
|
||||
}
|
||||
|
||||
static String getShopLogo() {
|
||||
return _userInfoBox?.get('shopLogo') ?? '';
|
||||
}
|
||||
|
||||
static void setUserInfo(String userInfo) {
|
||||
_userInfoBox?.put('userInfo', userInfo);
|
||||
}
|
||||
|
||||
static String getUserInfo() {
|
||||
return _userInfoBox?.get('userInfo') ?? '';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user