flutter 功能

flutter功能

带缓存的tab切换功能

使用PageController进行对应tab的widget缓存

dart 复制代码
late PageController _keepActiveVC;
 
  ///当前使用的视图索引
  late int _index;

  late PageController _keepActiveVC;

  /// 所有视图
  final List<Widget> _bodys = [];
  
  @override
  void initState() {
    super.initState();
    _index = 0;
    //页面控制器初始化
    _keepActiveVC = PageController(initialPage: _index );
  }
  
- @override
  Widget build(BuildContext context) {
    return Scaffold(body: _body(), bottomNavigationBar: _buildNavigationBar());
  }

  BottomNavigationBar _buildNavigationBar() {
    BottomNavigationBar bar = MyBottomNavigationBar(
     ......
      onTap: (i) {
        setState(() {
          _index = i;
          ///切换tab是跳转页面
          _keepActiveVC.jumpToPage(_index);
        });
      },
    );
    return bar;
  }
  
  Widget _body() {
    return PageView(
      ///禁用滚动
      physics: const NeverScrollableScrollPhysics(),
      controller: _keepActiveVC, //初始化的PageController
      children: _bodys, //当前所有视图的数组
      onPageChanged: (index) {
        _index = index; //切换选中的时候进行赋值
      },
    );

body中的子widget需要with AutomaticKeepAliveClientMixin ,并返回wantKeepAlive为true;

dart 复制代码
class _MyView extends State<MyView> with AutomaticKeepAliveClientMixin{
......
 @override
  bool get wantKeepAlive => widget.cacheWebView;
}

异常

Flutter 报错 setState() or markNeedsBuild() called during build

原因:视图未构建成功时调用了setState()或markNeedsBuild()方法

解决方法:

1.修改构建过程

2.使用官方提供了一个组件创建完成的回调通知方法

dart 复制代码
WidgetsBinding.instance.addPostFrameCallback((_) { 
       //需要创建的小组件
 });
相关推荐
枷锁—sha几秒前
【DVWA系列】——CSRF——Medium详细教程
android·服务器·前端·web安全·网络安全·csrf
枷锁—sha2 分钟前
跨站请求伪造漏洞(CSRF)详解
运维·服务器·前端·web安全·网络安全·csrf
群联云防护小杜18 分钟前
深度隐匿源IP:高防+群联AI云防护防绕过实战
运维·服务器·前端·网络·人工智能·网络协议·tcp/ip
汉得数字平台36 分钟前
【鲲苍提效】全面洞察用户体验,助力打造高性能前端应用
前端·前端监控
花海如潮淹43 分钟前
前端性能追踪工具:用户体验的毫秒战争
前端·笔记·ux
Cao_Shixin攻城狮4 小时前
Flutter运行Android项目时显示java版本不兼容(Unsupported class file major version 65)的处理
android·java·flutter
_丿丨丨_6 小时前
XSS(跨站脚本攻击)
前端·网络·xss
天天进步20156 小时前
前端安全指南:防御XSS与CSRF攻击
前端·安全·xss
拾光拾趣录8 小时前
括号生成算法
前端·算法
拾光拾趣录9 小时前
requestIdleCallback:让你的网页如丝般顺滑
前端·性能优化