SCRM-项目搭建-home index-01

2020-06-23  本文已影响0人  SuDream

项目搭建01 做底部 4个item 分页. package导入

1.flutter保证文字大小不受手机系统设置影响

只需要要在 MaterialApp 的builder MediaQuery 如下:

      MaterialApp(
       ......
        builder: (context, child) {
          /// 保证文字大小不受手机系统设置影响 https://www.kikt.top/posts/flutter/layout/dynamic-text/
          return MediaQuery(
            data: MediaQuery.of(context).copyWith(
                textScaleFactor:
                    1.0), // 或者 MediaQueryData.fromWindow(WidgetsBinding.instance.window).copyWith(textScaleFactor: 1.0),
            child: child,
          );
        });

2.flutter去除BottomNavigationBar水纹

1.在外层包裹一层 Theme 用 ThemeData去除(如下)
2.用 ios 风格的 CupertinoTabBar

Scaffold(
      bottomNavigationBar: Theme(
        data: ThemeData(
          brightness: Brightness.light,
          splashColor: Colors.transparent,
          highlightColor: Colors.transparent,
        ),
        child:  BottomNavigationBar(
          items: _buildBottomNavigationBarItem(),
          type: BottomNavigationBarType.fixed,
          currentIndex:value,
            .........
        
        ));  

3.flutter BottomNavigationBar 保持状态

AutomaticKeepAliveClientMixin,通过在子页面的 State 类重写wantKeepAlive为true

  1. BottomNavigationBar+indexStack //缺点 一开头就会加重 下面所有的 页面
  2. BottomNavigationBar+Stack+ Offstage //其实和上面是一样的.缺点 一开头就会加重 下面所有的 页面
  3. PageView+BottomNavigationBar //推荐
    详情请看 https://zhuanlan.zhihu.com/p/58582876

4.flutter ValueNotifier 数据通信

ValueNotifier是一个包含单个值的变更通知器,当它的值改变的时候,会通知它的监听。


class HomeProvider extends ValueNotifier<int> {
  HomeProvider() : super(0);
}

初始化
HomeProvider  provider=HomeProvider();

每当 改变provider.value 的值 会通知刷新 ,可以结合provider consumer 刷新局部

希望我能坚持做完这个项目

以梦为马,不负韶华.

上一篇下一篇

猜你喜欢

热点阅读