qiyu.dart 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import 'dart:async';
  2. import 'package:flutter/services.dart';
  3. import './qy_service_window_params.dart';
  4. import './qy_user_info_params.dart';
  5. typedef UnreadCountChangeListener(int unreadCount);
  6. typedef PermissionListener(String permission);
  7. class QiYuMethodCallHandler {
  8. QiYuMethodCallHandler();
  9. List<UnreadCountChangeListener> _unreadCountChangeListeners = [];
  10. void register(dynamic listener) {
  11. if (listener is UnreadCountChangeListener) {
  12. _unreadCountChangeListeners.add(listener);
  13. }
  14. }
  15. void unregister(dynamic listener) {
  16. if (listener is UnreadCountChangeListener) {
  17. _unreadCountChangeListeners.removeWhere((v) => v == listener);
  18. }
  19. }
  20. Future<dynamic> handler(MethodCall call) {
  21. switch (call.method) {
  22. case 'onUnreadCountChange':
  23. for (var unreadCountChangeListener in _unreadCountChangeListeners) {
  24. int unreadCount = call.arguments['unreadCount'];
  25. unreadCountChangeListener(unreadCount);
  26. }
  27. break;
  28. default:
  29. throw new UnsupportedError("Unrecognized Method");
  30. }
  31. return null!;
  32. }
  33. }
  34. class QiYu {
  35. static const MethodChannel _channel = const MethodChannel('flutter_qiyu');
  36. static QiYuMethodCallHandler _methodCallHandler = QiYuMethodCallHandler();
  37. static void registerListener(dynamic listener) {
  38. _methodCallHandler.register(listener);
  39. }
  40. static void unregisterListener(dynamic listener) {
  41. _methodCallHandler.unregister(listener);
  42. }
  43. static void onUnreadCountChange(UnreadCountChangeListener listener) {
  44. _methodCallHandler.register(listener);
  45. }
  46. static Future<bool> registerApp({String? appKey, String? appName}) async {
  47. _channel.setMethodCallHandler(_methodCallHandler.handler);
  48. return await _channel.invokeMethod('registerApp', {
  49. 'appKey': appKey,
  50. 'appName': appName,
  51. });
  52. }
  53. static Future<bool> openServiceWindow(QYServiceWindowParams params) async {
  54. return await _channel.invokeMethod('openServiceWindow', params.toJson());
  55. }
  56. static Future<bool> setCustomUIConfig(Map params) async {
  57. return await _channel.invokeMethod('setCustomUIConfig', params);
  58. }
  59. static Future<int> getUnreadCount() async {
  60. return await _channel.invokeMethod('getUnreadCount', {});
  61. }
  62. static Future<bool> setUserInfo(QYUserInfoParams params) async {
  63. return await _channel.invokeMethod('setUserInfo', params.toJson());
  64. }
  65. static Future<bool> logout() async {
  66. return await _channel.invokeMethod('logout', {});
  67. }
  68. static Future<bool> cleanCache() async {
  69. return await _channel.invokeMethod('cleanCache', {});
  70. }
  71. // 清理资源
  72. static Future<bool> cleanUp() async {
  73. final result = await _channel.invokeMethod('cleanUp');
  74. return result; // 返回清理结果
  75. }
  76. }