android - 在 Flutter 中获取“水平视口被赋予无界高度”错误
问题描述
我正在尝试将具有水平 GridView 子项的 ExpansionTile 放置在容器中。请参阅下面的代码。我收到错误消息“水平视口的高度没有限制。”
我不想明确指定 ExpansionTile 或 GridView 的高度,而是从 Expanded 小部件和 GridView 的子级计算得出。
我已尝试按照此处的建议在 GridView 中设置“shrinkWrap:true”,但没有成功。我还尝试根据这个答案将 GridView 包装在 Flexible 中,这给了我错误“RenderFlex 子级具有非零弹性,但传入的高度约束是无界的。”
我认为问题在于我如何使用 GridView,但我是 Flutter 的新手,不太确定。这是我的代码:
import 'package:flutter/material.dart';
void main() => runApp(
MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Title")),
body: Column(
children: <Widget>[
Expanded(
flex: 3,
child: ExpansionTile(
title: Text("Expandable"),
children: <Widget>[
GridView.count(
scrollDirection: Axis.horizontal,
crossAxisCount: 2,
children: <Widget>[
RawChip(label: Text("Hello")),
RawChip(label: Text("World")),
],
),
],
),
),
Expanded(
flex: 7,
child: Container(
color: Colors.blue
),
),
],
),
),
),
);
解决方案
您可以在您的 : 中添加一个高度约束GridView
:
ExpansionTile(
title: Text("Expandable"),
children: <Widget>[
SizedBox(
height: 200.0,
child: GridView.count(
scrollDirection: Axis.horizontal,
crossAxisCount: 2,
children: <Widget>[
RawChip(label: Text("Hello")),
RawChip(label: Text("World")),
],
),
),
],
),
推荐阅读
- url - 为 Kibana 查询字符串编码 URL
- paypal - Paypal-Merchant-SDK:如何使用 SetExpressCheckout.php 仅获取令牌,然后将其传递给 CreateRecurringPaymentsProfile.php?
- javascript - 根据不同对象的等级对对象数组进行排序
- vba - VBA 创建一个创建新宏的宏
- sql - 每个距离与最大值的距离
- cryptography - 是什么让 ECDH 单独依赖两个公钥?
- linux - 将 echo netcat 输出重定向到 docker log 或 stdout
- fortran - 使用 NAG fortran 6.2 “未初始化的值是由堆栈分配创建的”
- javascript - JS 数组没有选择正确的值
- c++ - 如何实现 constexpr 伪多态性?