flutter 我们如何在没有上下文的情况下定义设备类型

8fq7wneg  于 2023-11-21  发布在  Flutter
关注(0)|答案(1)|浏览(162)

我一直在寻找一种方法来定义一个设备是否是平板电脑或没有,并发现了一些关于检查最短边< 600,但它不工作.

class FontSizeManager {
  static final FontSizeManager _instance = FontSizeManager._internal();
  final screensize = WidgetsBinding.instance.window.display.size.shortestSide; //this prints 1080
  final bool isMobile = WidgetsBinding.instance.window.physicalSize.shortestSide < 600; //this is also 1080
  FontSizeManager._internal();

  factory FontSizeManager() {
    return _instance;
  }

  double fontSize(double size) {
    if(isMobile) {
      return size;
    } else {
      return size+8;
    }
  }
}

字符串
从我上面的代码中,它只得到了1080,这是屏幕的分辨率,所以600不能使用。还有flutter文档说'WidgetsBinding.instance.window'被弃用。用什么代替?
我想使用上面的类来管理所有小部件的字体大小。

kupeojn6

kupeojn61#

import 'package:sizer/sizer.dart';

class FontSizeManager {
  static final FontSizeManager _instance = FontSizeManager._internal();
  final double screenSize = SizerUtil.deviceScreenSize;

  late final bool isMobile;

  FontSizeManager._internal() {
    _init();
  }

  factory FontSizeManager() {
    return _instance;
  }

  _init() {
    isMobile = _calculateIsMobile();
  }

  bool _calculateIsMobile() {
    // Adjust this threshold based on your needs
    const double tabletShortestSide = 600;

    return screenSize < tabletShortestSide;
  }

  double fontSize(double size) {
    if (isMobile) {
      return size;
    } else {
      return size + 8;
    }
  }
}

字符串

相关问题