Skip to content

Latest commit

 

History

History
71 lines (51 loc) · 2.36 KB

readme_fit.md

File metadata and controls

71 lines (51 loc) · 2.36 KB

太极 屏幕自适应

参考 flutter_smart_dialog

参考 flutter_screenutil

我看了 flutter_screenutil 源码,觉得像是 FlutterWindow 这样的类,

或是 MediaQuery有些相关的方法,平时可能用的很少,

我自己可能学习的也不是特别完整和扎实,很多内在底层的实现也很模糊

觉得还是用 provider 实现自适应可能更加容易理解一点。

当然,最好是不要依靠第三方组件,也许我也会实现一个自己的 provider 也说不一定。这就是后话中的后话了。

使用

v 0.0.2-alpha 版本使用说明(持续优化中)

第一种方法: 不传入 context 的调用

因为用到了provider ,所以不能在 MaterialApp 中完成所有的初始化操作,代码如下:

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: ...,
      // 这里传入一个 builder 函数,主要是声明provider的 
      builder: TaichiFitnessUtil.rootBuilder(),
    );
  }
}

然后需要在build方法中写入(一般来说在首页添加以下代码就可以了,但是测试下来如果首页采用的是 pushReplacement 这种跳转方式会有空值异常,所以使用这种跳转方式的需要重新init一下,而pushNamed或者push这种方式的则不需要重新init):

TaichiFitnessUtil.init(context);

这是保证TaichiFitnessUtil这个单例存在一个context。

然后就可以使用300.w等类似的方法调用了。

第二种方法,传入 context 调用

这种更加容易理解,因为使用 provider 需要context,所以每次调用的时候就写入一个context,然后再进行适配字体300.setHeight(context)

所有context都能为空,为空时原值传出。