账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请问StaggeredGridView插件谁用过?为什么不会滚动?
    • 2020-01-01 00:00
    • 11
    25
    0

    问题描述

    StaggeredGridView加载出一页来,下面的图片不能滑动查看到。页面不会滚动。

    问题出现的环境背景及自己尝试过哪些方法

    windows10下flutter 1.7,
    能进入初始化print,但滑动屏幕不会进入监听事件。
    controller: _scrollController,设置了,
    itemCount: 10,图片加载10张

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    import 'dart:math';
    import 'dart:typed_data';
    
    import 'package:flutter/material.dart';
    import 'package:dio/dio.dart';
    import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
    
    final Uint8List kTransparentImage = new Uint8List.fromList(<int>[
      0x89,
      0x50,
      0x4E,
      0x47,
      0x0D,
      0x0A,
      0x1A,
      0x0A,
      0x00,
      0x00,
      0x00,
      0x0D,
      0x49,
      0x48,
      0x44,
      0x52,
      0x00,
      0x00,
      0x00,
      0x01,
      0x00,
      0x00,
      0x00,
      0x01,
      0x08,
      0x06,
      0x00,
      0x00,
      0x00,
      0x1F,
      0x15,
      0xC4,
      0x89,
      0x00,
      0x00,
      0x00,
      0x0A,
      0x49,
      0x44,
      0x41,
      0x54,
      0x78,
      0x9C,
      0x63,
      0x00,
      0x01,
      0x00,
      0x00,
      0x05,
      0x00,
      0x01,
      0x0D,
      0x0A,
      0x2D,
      0xB4,
      0x00,
      0x00,
      0x00,
      0x00,
      0x49,
      0x45,
      0x4E,
      0x44,
      0xAE,
    ]);
    
    
    
    
    List<IntSize> _createSizes(int count) {
      Random rnd = new Random();
      return new List.generate(count,
          (i) => new IntSize((rnd.nextInt(500) + 200), rnd.nextInt(800) + 200));
    }
    
    class Example08 extends StatefulWidget {
      @override
      Example08State createState() => new Example08State();
    }
    
    class Example08State extends State<Example08> {
      static const int _kItemCount = 10;
      final List<IntSize> _sizes = _createSizes(_kItemCount).toList();
      ScrollController _scrollController = new ScrollController();
    
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          appBar: new AppBar(
            title: new Text('random dynamic tile sizes'),
          ),
          body: new StaggeredGridView.countBuilder(
            controller: _scrollController,
            itemCount: 10,
            primary: false,
            crossAxisCount: 4,
            mainAxisSpacing: 4.0,
            crossAxisSpacing: 4.0,
            itemBuilder: (context, index) => new _Tile(index, _sizes[index]),
            staggeredTileBuilder: (index) => new StaggeredTile.fit(2),
          ),
        );
      }
    
      @override
      void initState() {
        super.initState();
        print('初始化进入');
    
        _scrollController.addListener(() {
          print('我监听到了');
        });
      }
    
    }
    
    class IntSize {
      const IntSize(this.width, this.height);
    
      final int width;
      final int height;
    }
    
    class _Tile extends StatelessWidget {
      const _Tile(this.index, this.size);
    
      final IntSize size;
      final int index;
    
      @override
      Widget build(BuildContext context) {
        return new Card(
          child: new Column(
            children: <Widget>[
              new Stack(
                children: <Widget>[
                  //new Center(child: new CircularProgressIndicator()),
                  new Center(
                    child: new FadeInImage.memoryNetwork(
                      placeholder: kTransparentImage,
                      image: 'https://picsum.photos/${size.width}/${size.height}/',
                    ),
                  ),
                ],
              ),
              new Padding(
                padding: const EdgeInsets.all(4.0),
                child: new Column(
                  children: <Widget>[
                    new Text(
                      'Image number $index',
                      style: const TextStyle(fontWeight: FontWeight.bold),
                    ),
                    new Text(
                      'Width: ${size.width}',
                      style: const TextStyle(color: Colors.grey),
                    ),
                    new Text(
                      'Height: ${size.height}',
                      style: const TextStyle(color: Colors.grey),
                    ),
                  ],
                ),
              )
            ],
          ),
        );
      }
    }
    

    你期待的结果是什么?实际看到的错误信息又是什么?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • щǒ就是这麽↘拽 普通会员 1楼

      StaggeredGridView插件是一个强大的、灵活的自定义滑动视图。它可以让你轻松地在列表视图中使用分页、自定义列头、分页按钮等。它也可以轻松地处理滑动,包括设置滑块的最小值和最大值,以及在滑动时触发事件。

      但是,如果你在使用StaggeredGridView时遇到了滚动问题,那么你可能需要检查以下几点:

      1. 确保你的应用程序有足够的内存来渲染StaggeredGridView的视图。StaggeredGridView是一个大组件,所以它需要大量的内存来渲染每个分页。

      2. 确保你的应用程序能够正确地处理滑动事件。StaggeredGridView使用滑块来表示分页,因此你需要确保你的应用程序能够正确地处理滑块的滚动事件。

      3. 如果你的应用程序是在处理大型数据集时,那么你可能需要考虑使用分页,而不是一次性加载所有数据。这可以避免由于内存不足而导致的滚动问题。

      4. 如果你的应用程序是在处理滑动时触发了分页按钮,那么你需要确保你的应用程序能够正确地处理分页按钮的点击事件。这可以避免由于分页按钮的点击事件引发的滚动问题。

      希望这些建议能够帮助你解决问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部