在Flutter中出现“水平视口给定了无限高度”的错误。
在Flutter中出现“水平视口给定了无限高度”的错误。
我试图在一个容器中放置一个带有水平GridView子项的ExpansionTile。代码如下所示。我收到错误消息“水平视口的高度未确定。”
我不想明确指定ExpansionTile或GridView的高度,而是希望它从Expanded小部件和GridView的子项中计算得出。
我尝试在GridView中设置'shrinkWrap: true',如这里建议的,但没有成功。我还尝试根据这个答案中的建议,将GridView包装在Flexible中,但是我收到错误消息“RenderFlex的子项具有非零flex,但传入的高度约束是未确定的。”
我认为问题出在我如何使用GridView上,但我对Flutter还是很陌生,不太确定。以下是我的代码:
import 'package:flutter/material.dart';
void main() => runApp(
MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Title")),
body: Column(
children:
Expanded(
flex: 3,
child: ExpansionTile(
title: Text("可展开项"),
children:
GridView.count(
scrollDirection: Axis.horizontal,
crossAxisCount: 2,
children:
RawChip(label: Text("你好")),
RawChip(label: Text("世界")),
],
),
],
),
),
Expanded(
flex: 7,
child: Container(
color: Colors.blue
),
),
],
),
),
),
);
在Flutter中,当使用GridView
组件时,有时会出现"Horizontal viewport was given unbounded height"的错误。这个错误的出现原因是GridView
没有明确的高度约束。
为了解决这个问题,我们可以为GridView
添加一个高度约束。可以使用SizedBox
组件来设置GridView
的高度,如下所示:
ExpansionTile(
title: Text("Expandable"),
children:
SizedBox(
height: 200.0,
child: GridView.count(
scrollDirection: Axis.horizontal,
crossAxisCount: 2,
children:
RawChip(label: Text("Hello")),
RawChip(label: Text("World")),
],
),
),
],
),
通过在SizedBox
中设置一个具体的高度(例如200.0),我们为GridView
提供了一个明确的高度约束,从而解决了"Horizontal viewport was given unbounded height"错误。