Browse Source

feat : 网络提示

dev
徐振升 2 weeks ago
parent
commit
b58e1ffa00
  1. 11
      lib/app/core/bindings/initial_binding.dart
  2. 53
      lib/app/core/controllers/app_controller.dart

11
lib/app/core/bindings/initial_binding.dart

@ -1,5 +1,6 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart'; import 'package:get_storage/get_storage.dart';
import 'package:problem_check_system/app/core/controllers/app_controller.dart';
import 'package:problem_check_system/app/core/services/database_service.dart'; import 'package:problem_check_system/app/core/services/database_service.dart';
import 'package:problem_check_system/app/core/services/network_status_service.dart'; import 'package:problem_check_system/app/core/services/network_status_service.dart';
import 'package:problem_check_system/app/core/services/http_provider.dart'; import 'package:problem_check_system/app/core/services/http_provider.dart';
@ -15,12 +16,12 @@ import 'package:uuid/uuid.dart';
class InitialBinding implements Bindings { class InitialBinding implements Bindings {
@override @override
void dependencies() { void dependencies() {
_registerCoreServices(); _registerServices();
_registerRepositories(); _registerRepositories();
_registerControllers();
} }
void _registerCoreServices() { void _registerServices() {
///
Get.put<GetStorage>(GetStorage(), permanent: true); Get.put<GetStorage>(GetStorage(), permanent: true);
Get.put<Uuid>(Uuid(), permanent: true); Get.put<Uuid>(Uuid(), permanent: true);
Get.put<HttpProvider>(HttpProvider()); Get.put<HttpProvider>(HttpProvider());
@ -53,4 +54,8 @@ class InitialBinding implements Bindings {
), ),
); );
} }
void _registerControllers() {
Get.put(AppController(), permanent: true);
}
} }

53
lib/app/core/controllers/app_controller.dart

@ -0,0 +1,53 @@
// lib/app/core/controllers/app_controller.dart ()
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:problem_check_system/app/core/services/network_status_service.dart'; // Service
class AppController extends GetxController {
final NetworkStatusService _networkStatusService = Get.find();
//
bool _isFirstCheck = true;
@override
void onInit() {
super.onInit();
// [] 使 GetX 'ever' worker isOnline
// ever() isOnline.value
ever(_networkStatusService.isOnline, _showConnectivitySnackbar);
}
void _showConnectivitySnackbar(bool isOnline) {
//
if (_isFirstCheck) {
_isFirstCheck = false;
if (isOnline) {
return; // 线
}
}
// SnackBar
if (!isOnline) {
Get.snackbar(
'网络断开',
'请检查您的网络连接',
backgroundColor: Colors.red[400],
colorText: Colors.white,
icon: const Icon(Icons.wifi_off, color: Colors.white),
duration: const Duration(seconds: 5), //
);
} else {
//
Get.snackbar(
'网络已连接',
'您现在已恢复在线状态',
backgroundColor: Colors.green[400],
colorText: Colors.white,
icon: const Icon(Icons.wifi, color: Colors.white),
duration: const Duration(seconds: 3),
);
}
}
}
Loading…
Cancel
Save