Flutter PageView 动态替换页面坑.........

最近有机会接触Flutter, 一个现有的Flutter工程, 别人写的, 没改完BUG就跑了, 所以BUG无数, 坑无数, 让人很无语.  

首先说一下交互体验, 个人觉得加载Flutter页面跟加载H5相差不多, 性能上和原生差了好几条街, 根本就不是一个数量级上的东西.  不知道为什么那么多人推崇? 难道是跨平台方便的原因? 还是其他?     呃...,总之对Flutter特别想吐槽....

好了, 上面都是个人吐槽..勿喷...

 

工程师这样的, 主界面有几个Tab, 每个Tab对应一个页面.  这个几个Tab和对应的界面不是固定的, 在某种情况下, Tab和对应的界面会发生根本性变化. 

比如 Tab 对应的 A, B , C, D这几个按钮, 分别对应AWidget, BWidget, CWidget, DWidget.

变化后会Tab 变成X, Y, Z, 界面也变成XWidget, YWidget, ZWidget.

 

原来代码:

//https://blog.csdn.net/x531305158/article/details/107384774
@override
  Widget build() {
    ScreenUtil.init(context);
    return WillPopScope(
      onWillPop: _back,
      child: PageView(
        controller: _pageController,
        children: _pages,
        physics: NeverScrollableScrollPhysics(),
      ),
    );
  }

原主人是这样写的, 打算通过修改_pages动态添加修改的页面.  发现完全行不通.... 建议大家去看下源码, 就不带大家看了..

PageView所调用, 是这样的, fulState (add children:) ->build(lessState). 发现当子页面初始化后, 就不能在对这个子页面Widget修改(是指不能移除等操作).

修改后:

//https://blog.csdn.net/x531305158/article/details/107384774
@override
  Widget build() {
    return WillPopScope(
      onWillPop: _back,
      child: flag? PageView(
        controller: _pageController,
        children: _onePages,
        physics: NeverScrollableScrollPhysics(),
      ) : PageView(
        controller: _pageController,
        children: _twoPages,
        physics: NeverScrollableScrollPhysics(),
      ),
    );
  }

 

对我这种Flutter初学者, 造成成吨的暴击伤害... 

https://blog.csdn.net/x531305158/article/details/107384774

哈哈, 随手mark...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值