萌新只喝茶 2022-10-12 11:25 采纳率: 0%
浏览 15
已结题

flutter中StaggeredGridView上拉刷新触发了,数组也发生了变化,但是列表没有任何变化

flutter中StaggeredGridView上拉刷新触发了,数组也发生了变化,但是列表没有任何变化
class HomeTabPage extends StatefulWidget {
  final String? name;
  final List<BannerMo>? bannerList;
  const HomeTabPage({Key? key,  this.name,  this.bannerList}) : super(key: key);

  @override
  _HomeTabPageState createState() => _HomeTabPageState();
}
const bannerString = "[{\"title\":\"视频1\",\"type\":\"video\",\"url\":\"地址链接\",\"cover\":\"https://img0.baidu.com/it/u=4008146120,512111027&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1665421200&t=096ce0c96dbc4abbec9fdeb707aa2570\",\"name\":0},"
    "{\"title\":\"网页1\",\"type\":\"url\",\"url\":\"地址链接\",\"cover\":\"https://img1.baidu.com/it/u=3622442929,3246643478&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1665421200&t=6f3dc0e6a6f0c9d1703612dc581d4bc9\",\"name\":1},"
    "{\"title\":\"视频2\",\"type\":\"video\",\"url\":\"地址链接\",\"cover\":\"https://img1.baidu.com/it/u=3009731526,373851691&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1665421200&t=63cf502da41c3ccb7f03dd03309fae01\",\"name\":2},"
    "{\"title\":\"网页2\",\"type\":\"url\",\"url\":\"地址链接\",\"cover\":\"https://img2.baidu.com/it/u=1814268193,3619863984&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1665421200&t=e27eb9d3e19f9d79609023bcd4fc4505\",\"name\":3}]";

class _HomeTabPageState extends State<HomeTabPage> with AutomaticKeepAliveClientMixin{
  List<VideoModel> videoList=[];
  final List bannnerjsonMap=jsonDecode(bannerString);
  ScrollController _scrollController=ScrollController();
  bool _loading=false;
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _scrollController.addListener(() {
      var dis=_scrollController.position.maxScrollExtent-_scrollController.position.pixels;
      print('dis:${dis}');
      //当底部距离不足300时加载更多
      if(dis<300){
        if(!_loading){
          _loadDate(loadMore: true);
        }
      }
    });
    _loadDate();
  }
  @override
  Widget build(BuildContext context) {

    return RefreshIndicator(
      onRefresh: _loadDate,
      color: Colors.yellow,
        child: MediaQuery.removePadding(
          removeTop: true,
          context: context,
          child: StaggeredGridView.countBuilder(
            controller: _scrollController,
            crossAxisCount: 2,
            itemCount: videoList.length,
            itemBuilder: (BuildContext context, int index) {
              if (widget.bannerList != null && index == 0) {
                return Padding(
                    padding: EdgeInsets.only(bottom: 8), child: _banner());
              } else {
                return VideoCard(videoModel: videoList[index],);
              }
            },
            staggeredTileBuilder: (int index) {
              if (widget.bannerList != null && index == 0) {
                // Banner 独占两列
                return StaggeredTile.fit(2);
                // return StaggeredTile.count(2,  1);
              } else {
                return StaggeredTile.fit(1);
              }
            },
          ),
        ),
    );
  }

  _banner() {
    return Padding(padding: const EdgeInsets.only(left: 8,right: 8),
    child: HiBanner(bannerList: widget.bannerList!,));
  }

  Future<void> _loadDate({loadMore=false}) async {
    _loading=true;
    print("1111111111");
    for(var a=0;a<3;a++){
      videoList.add(VideoModel.fromJson(bannnerjsonMap[0]));
      videoList.add(VideoModel.fromJson(bannnerjsonMap[1]));
      videoList.add(VideoModel.fromJson(bannnerjsonMap[2]));
      videoList.add(VideoModel.fromJson(bannnerjsonMap[3]));
    }
    print("videolist:${videoList.length}++banner:${widget.bannerList!.length}");
    Future.delayed(Duration(milliseconds: 1000),(){
      _loading=false;
    });

  }
  //列表常驻内存,不会自动刷新
  @override
  // TODO: implement wantKeepAlive
  bool get wantKeepAlive => true;
}

  • 写回答

1条回答 默认 最新

  • 萌新只喝茶 2022-10-12 14:37
    关注

    原因是数据更新后没有调用setState(){}方法去刷新页面数据

    评论

报告相同问题?

问题事件

  • 系统已结题 10月20日
  • 创建了问题 10月12日

悬赏问题

  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败