base_core_api.dart 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import 'dart:io';
  2. import 'package:nomo/pigeons/core_api.g.dart' as pigeon;
  3. import 'mobile_core_api.dart';
  4. import 'windows_core_api.dart';
  5. // 导出子类供外部使用
  6. export 'mobile_core_api.dart';
  7. export 'windows_core_api.dart';
  8. /// 导出 onEventChange 函数供外部使用
  9. Stream<String> onEventChange({String instanceName = ''}) {
  10. if (Platform.isWindows) {
  11. // Windows 使用自定义实现
  12. return WindowsCoreApi.eventStream;
  13. }
  14. // Android/iOS 使用 Pigeon 实现
  15. return pigeon.onEventChange(instanceName: instanceName);
  16. }
  17. /// 核心 API 抽象基类
  18. /// Android/iOS 使用 Pigeon 实现,Windows 使用自定义实现
  19. abstract class BaseCoreApi {
  20. static BaseCoreApi? _instance;
  21. /// 工厂方法,单例模式,根据平台返回对应实现
  22. factory BaseCoreApi() {
  23. _instance ??= Platform.isWindows
  24. ? WindowsCoreApi.create()
  25. : MobileCoreApi.create();
  26. return _instance!;
  27. }
  28. /// 获取应用列表
  29. Future<String?> getApps();
  30. /// 获取系统语言
  31. Future<String?> getSystemLocale();
  32. /// 连接
  33. Future<bool?> connect(
  34. String sessionId,
  35. int socksPort,
  36. String tunnelConfig,
  37. String configJson,
  38. int remainTime,
  39. bool isCountdown,
  40. List<String> allowVpnApps,
  41. List<String> disallowVpnApps,
  42. String accessToken,
  43. String aesKey,
  44. String aesIv,
  45. int locationId,
  46. String locationCode,
  47. List<String> baseUrls,
  48. String params,
  49. int peekTimeInterval,
  50. );
  51. /// 断开连接
  52. Future<bool?> disconnect();
  53. /// 获取远程 IP
  54. Future<String?> getRemoteIp();
  55. /// 获取广告 ID
  56. Future<String?> getAdvertisingId();
  57. /// 将任务移至后台
  58. Future<bool?> moveTaskToBack();
  59. /// 是否已连接
  60. Future<bool?> isConnected();
  61. /// 获取 SIM 卡信息
  62. Future<String?> getSimInfo();
  63. /// 获取渠道
  64. Future<String?> getChannel();
  65. /// 打开应用
  66. Future<void> openPackage(String packageName);
  67. }