screen_handler.dart 1.02 KB
import 'package:appframe/services/dispatcher.dart';
import 'package:flutter/services.dart' hide MessageHandler;

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

    int type = params['type'];
    await _setOrientation(type);

    return true;
  }

  Future<void> _setOrientation(int screenType) async {
    if (screenType == 2) {
      // 横屏模式
      await SystemChrome.setPreferredOrientations([
        DeviceOrientation.landscapeLeft,
        DeviceOrientation.landscapeRight,
      ]);
      // 隐藏状态栏
      await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
    } else {
      // 竖屏模式(默认)
      await SystemChrome.setPreferredOrientations([
        DeviceOrientation.portraitUp,
        DeviceOrientation.portraitDown,
      ]);
      // 显示状态栏
      await SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
    }
  }
}