SliverAnimatedList 滚动时不断重建

时间:2021-04-20 12:35:13

标签: flutter listview flutter-widget

我的问题是,每次我使用导航栏更改页面时都会调用 itemBuilder,更糟糕的是,即使我向下和向上滚动,项目也会重建,这很糟糕,因为我使用的是在线图像。

有谁知道我怎样才能防止这种情况发生?

我有一个使用底部导航的主页小部件

child: Scaffold(
                bottomNavigationBar: bottomNavigationBar,
                key: scaffoldKey,
                backgroundColor: Colors.transparent,
                appBar: appBar,
                body: AnimatedContainer(
                  decoration: gradientList[_selectedIndex],
                  duration: Duration(milliseconds: interpolationTime),
                  child: Center(
                      child: PageView(
                          onPageChanged: (int) {
                            setState(() {
                              _selectedIndex = int;
                            });
                          },
                          controller: _pageController,
                          children: _widgetsBottomNav)),
                )),
          );

我的 _widgetsBottomNav 对象是在初始化时创建的小部件列表

 @override
  void initState() {
    _pageController = PageController();

    _widgetsBottomNav = <Widget>[
      getLikesPage(),
      getFollowsPage(),
    ];


    super.initState();
  }

这是我的 getLikesPage() 函数:

 FutureBuilder<bool> getLikesPage() {
    return FutureBuilder(
        future: dbService.hasLikeData,
        builder: (context, AsyncSnapshot snapshot) {
            return Container(
                child: SmartRefresher(
                    enablePullDown: true,
                    controller: _refreshLikesController,
                    onRefresh: _onLikesRefresh,
                    onLoading: _onLikesLoading,
                    child: CustomScrollView(
                      slivers: [
                        SliverAnimatedList(
                            key: _likeListKey,
                            initialItemCount: dbService.likesData.length,
                            itemBuilder: _likeBuilder),
                      ],
                    )));}
  
  }
```

0 个答案:

没有答案