关于 PageView 每次点击tab都会重新渲染页面的问题

来源:15-5 Flutter Plugin开发指南-Android端实现-1【打通Flutter与Android的任通二脉】

JakePrim

2019-04-16

//      PageView(
//        controller: _controller,
//        children: <Widget>[
//          //page的页面
//          HomePage(),
//          SearchPage(
//            hideLeft: true,
//          ),
//          TravelPage(),
//          MinePage(),
//        ],
//        onPageChanged: (int index) {
//          //滑动page的监听
//          setState(() {
//            //改变tab状态
//            _controllerIndex = index;
//          });
//        },
//      ),

我改成了 ,如下代码 就可以解决了,但是滑动就没了

body: IndexedStack(
        children: <Widget>[
          //page的页面
          HomePage(),
          SearchPage(hideLeft: true,),
          TravelPage(),
          MinePage(),
        ],
        index: _controllerIndex,
      ),
写回答

1回答

CrazyCodeBoy

2019-04-16

可以让不想重新渲染的页面实现AutomaticKeepAliveClientMixin:

class _TravelTabPageState extends State<TravelTabPage>
    with AutomaticKeepAliveClientMixin {
 ...
  @override
  bool get wantKeepAlive => true;
}


具体可参考第13章的实现:

https://git.imooc.com/coding-321/flutter_trip/src/master/lib/pages/travel_tab_page.dart#L34


0
1
JakePrim
非常感谢!
2019-04-17
共1条回复

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3270 问题

查看课程