颤振,如何正常构造gridview结构?

颤振,如何正常构造gridview结构?,gridview,flutter,rendering,Gridview,Flutter,Rendering,我正在实现通过GridView和学习BloC模式来显示图像,但我的实现仍然存在一个关于渲染问题的错误 很长一段时间以来,我试图找到解决办法,但我没有领会。下面是我的代码,这个代码结构有什么问题 @override Widget build(BuildContext context) { return StreamBuilder( stream: bloc.state, builder: (BuildContext context, AsyncS

我正在实现通过GridView和学习BloC模式来显示图像,但我的实现仍然存在一个关于渲染问题的错误

很长一段时间以来,我试图找到解决办法,但我没有领会。下面是我的代码,这个代码结构有什么问题

@override
    Widget build(BuildContext context) {
      return StreamBuilder(
        stream: bloc.state,
        builder: (BuildContext context, AsyncSnapshot<WebtoonState> snapshot){
          final state = snapshot.data;
          return Scaffold(
            body: Column(
                children: <Widget>[
                  SizedBox(height: 40.0),
                  RaisedButton(
                    child: Text(
                      '웹툰!!',
                      style: TextStyle(
                        color: Colors.black
                      ),
                    ),
                    color: Colors.orange,
                    onPressed: () => bloc.onDayChanged.add('mon'),
                  ),
                  SizedBox(height: 40.0),
                  Stack(
                    children: <Widget>[
                      WebtoonLoadingWidget(visible: state is WebtoonLoading),
                      WebtoonResultWidget(
                        items: state is WebtoonDone ? state.result.items : [],
                      )
                    ],
                  )
                ],
              ),
          );
        },
      );
    }
@覆盖
小部件构建(构建上下文){
返回流生成器(
流:bloc.state,
生成器:(BuildContext上下文,异步快照){
最终状态=snapshot.data;
返回脚手架(
正文:专栏(
儿童:[
尺寸箱(高度:40.0),
升起的按钮(
子:文本(
'웹툰!!',
样式:TextStyle(
颜色:颜色。黑色
),
),
颜色:颜色。橙色,
onPressed:()=>bloc.onDayChanged.add('mon'),
),
尺寸箱(高度:40.0),
堆叠(
儿童:[
WebtoonLoadingWidget(可见:状态为WebtoonLoading),
WebtoonResultWidget(
items:状态为WebtoonDone?state.result.items:[],
)
],
)
],
),
);
},
);
}
WebtoonResultWidget

Widget build(BuildContext context) {
      return AnimatedOpacity(
        duration: Duration(milliseconds: 300),
        opacity: visible ? 1.0 : 0.0,
        child: GridView.count(
              shrinkWrap: true,
              crossAxisCount: 3,
              childAspectRatio: 0.6,
              children: List.generate(items.length, (index){
                return Column(
                  children: <Widget>[
                    Image.network(
                      items[index].imgUrl,
                      scale: 0.5
                    ),
                    Padding(
                      padding: const EdgeInsets.all(5.0),
                      child: Column(
                        children: <Widget>[
                          Align(
                            alignment: Alignment.centerLeft,
                            child: Text(
                              items[index].title,
                              style: TextStyle(fontWeight: FontWeight.bold),
                            ),
                          ),
                          Text(
                            "★ " + items[index].rate,
                            style: TextStyle(
                              color: Colors.red,
                              fontWeight: FontWeight.bold
                            ),
                          ),
                          Expanded(child: Container()),
                          Align(
                            alignment: Alignment.centerLeft,
                            child: Text(
                              items[index].artist,
                              style: TextStyle(fontWeight: FontWeight.bold),
                            ),
                          )
                        ],
                      ),
                    )
                  ],
                );
              }),
            ),
      );
    }
小部件构建(构建上下文){
返回能力(
持续时间:持续时间(毫秒:300),
不透明度:可见?1.0:0.0,
子项:GridView.count(
收缩膜:对,
交叉轴计数:3,
childAspectRatio:0.6,
子项:List.generate(items.length,(索引){
返回列(
儿童:[
图像网络(
items[索引].imgUrl,
比例:0.5
),
填充物(
填充:常数边集全部(5.0),
子:列(
儿童:[
对齐(
对齐:alignment.centerLeft,
子:文本(
项目[索引]。标题,
样式:TextStyle(fontWeight:fontWeight.bold),
),
),
正文(
"★ " + 项目[索引]。费率,
样式:TextStyle(
颜色:颜色,红色,
fontWeight:fontWeight.bold
),
),
已展开(子:容器()),
对齐(
对齐:alignment.centerLeft,
子:文本(
项目[索引]。艺术家,
样式:TextStyle(fontWeight:fontWeight.bold),
),
)
],
),
)
],
);
}),
),
);
}
我的错误日志

I/颤振(28386):══╡ 呈现库捕获到异常 ╞═════════════════════════════════════════════════════════ I/颤振 (28386):在performLayout()期间引发了以下断言: I/flatter(28386):“包:flatter/src/rendering/object.dart”:失败 断言:第1578行位置12:I/颤振(28386): “!\u debugDoingThisLayout”:不正确。I/flatter(28386):I/flatter (28386):断言指示框架中的错误 本身,或者我们应该提供基本的I/flatter(28386):更多 此错误消息中的信息可帮助您确定和修复 潜在原因。I/FLASTER(28386):在任何一种情况下,请报告 通过在GitHub:I/flatter(28386)上提交一个bug来验证此断言:
I/flatter(28386):I/flatter(28386):当抛出异常时, 这是堆栈:I/flatter(28386):#2 RenderObject.layout (软件包:flatter/src/rendering/object.dart:1578:12)I/flatter(28386):

3 RenderFlex.performLayout(包:flatter/src/rendering/flex.dart:738:15)I/flatter(28386):#4 RenderObject.layout(包:flatter/src/rendering/object.dart:1634:7)


使用容器小部件包装列并为其指定固定大小。 我通过添加固定高度来解决同样的问题

Container(
    color: Colors.white,
    height: 110,
    padding: EdgeInsets.only(left: getSizeOf(20)),
    alignment: Alignment.topCenter,
    child: new Row(
      children: <Widget>[
        new Expanded(
            child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
              Text(
                exercise.title,
                style: TextStyle(
                  fontSize: getSizeOf(20),
                  fontFamily: Constant.fontRegular,
                ),
              ),
              SizedBox(height: 5.0),
              exercise.categoriesData.length > 3
                  // ? showFirstThreeCategoryTags(exercise.categoriesData, getTagView, 26)
                  ? showFirstThree(exercise.categoriesData)
                  : Wrap(
                      direction: Axis.horizontal,
                      crossAxisAlignment: WrapCrossAlignment.start,
                      alignment: WrapAlignment.start,
                      spacing: 1,
                      children:
                          exercise.categoriesData.map((Category tagCate) {
                        return getTagView(tagCate);
                      }).toList()),
            ])),
        loadFirebaseImage(exercise.images[0], 100, context, exercise.images)
      ],
    ));
容器(
颜色:颜色,白色,
身高:110,
填充:仅限边集(左:getSizeOf(20)),
对齐:alignment.topCenter,
孩子:新的一排(
儿童:[
新扩展(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
正文(
练习.title,
样式:TextStyle(
fontSize:getSizeOf(20),
fontFamily:Constant.fontRegular,
),
),
尺寸箱(高度:5.0),
练习.categoriesData.length>3
//?显示前三个类别标签(exercise.categoriesData,getTagView,26)
?显示前三个(练习。分类数据)
:包裹(
方向:水平轴,
crossAxisAlignment:WrapCrossAlignment.start,
对齐:wrappalignment.start,
间距:1,
儿童:
exercise.categoriesData.map((Category标记){
返回getTagView(ta