title_bar_handler.dart 815 Bytes
import 'package:appframe/bloc/web_cubit.dart';
import 'package:appframe/services/dispatcher.dart';

class TitleBarHandler extends MessageHandler {
  late WebCubit? _webCubit;

  @override
  void setCubit(WebCubit cubit) {
    this._webCubit = cubit;
  }

  void _unfollowCubit() {
    this._webCubit = null;
  }

  @override
  Future<dynamic> handleMessage(params) async {
    try {
      if (params is! Map<String, dynamic>) {
        throw Exception('参数错误');
      }

      final String title = params['title'] as String;
      final String color = params['color'] as String;
      final String bgColor = params['bgColor'] as String;
      final String icon = params['icon'] as String;

      return _webCubit!.setTitleBar(title, color, bgColor, icon);
    } finally {
      _unfollowCubit();
    }
  }
}