【问题标题】:ExpandedTile - BoxConstraints forces an infinite widthExpandedTile - BoxConstraints 强制无限宽度
【发布时间】:2020-09-21 11:05:09
【问题描述】:

我正在创建一个应用程序,当我使用 ExpandedTile 时会出现此错误。你们能帮帮我吗?

════════ 渲染库捕获的异常════════

在 performLayout() 期间抛出了以下断言: BoxConstraints 强制使用无限宽度。

class PlayersTile extends StatelessWidget {

  final PlayersData data;

  PlayersTile(this.data);

  @override
  Widget build(BuildContext context) {
    return Card(
      child: InkWell(
        child: Row(
          children: <Widget>[
            Flexible(
              flex: 1,
              child: Image.network(
                data.image,
                fit: BoxFit.cover,
                height: 150.0,
              ),
            ),
            Flexible(
              flex: 1,
              child: Container(
                padding: EdgeInsets.all(8.0),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    Text(
                      data.name,
                      style: TextStyle(
                        fontWeight: FontWeight.w500,
                        fontSize: 15.0,
                      ),
                    ),
                    Text(
                      "DT\$ ${data.points.toString()}",
                      style: TextStyle(
                          color: Theme.of(context).primaryColor,
                          fontSize: 15.0,
                          fontWeight: FontWeight.bold
                      ),
                    ),
                  ],
                ),
              ),
            ),
            ExpansionTile(
              children: <Widget>[
                Text("teste")
              ],
            )
          ],
        ),
      ),
    );
  }
}

【问题讨论】:

  • 它是否告诉您此错误发生在小部件树的哪个位置?这是一个重要的信息。如果您看不到,请尝试将行和可扩展磁贴等小部件放入具有给定宽度的容器中,看看这是否是导致小部件的原因。

标签: flutter


【解决方案1】:

您可以在下面复制粘贴运行完整代码
您可以像在 Image.networkContainer 中一样使用 Flexible 包装 ExpansionTile

Flexible(
          flex: 1,
          child: ExpansionTile(

工作演示

完整代码

import 'package:flutter/material.dart';

class PlayersData {
  String name;
  String image;
  int points;

  PlayersData({this.name, this.image, this.points});
}

class PlayersTile extends StatelessWidget {
  final PlayersData data;

  PlayersTile(this.data);

  @override
  Widget build(BuildContext context) {
    return Card(
      child: InkWell(
        child: Row(
          children: <Widget>[
            Flexible(
              flex: 1,
              child: Image.network(
                data.image,
                fit: BoxFit.cover,
                height: 150.0,
              ),
            ),
            Flexible(
              flex: 1,
              child: Container(
                padding: EdgeInsets.all(8.0),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    Text(
                      data.name,
                      style: TextStyle(
                        fontWeight: FontWeight.w500,
                        fontSize: 15.0,
                      ),
                    ),
                    Text(
                      "DT\$ ${data.points.toString()}",
                      style: TextStyle(
                          color: Theme.of(context).primaryColor,
                          fontSize: 15.0,
                          fontWeight: FontWeight.bold),
                    ),
                  ],
                ),
              ),
            ),
            Flexible(
              flex: 1,
              child: ExpansionTile(
                children: <Widget>[Text("teste")],
              ),
            )
          ],
        ),
      ),
    );
  }
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            PlayersTile(PlayersData(
                name: "abc",
                image: "https://picsum.photos/250?image=9",
                points: 10)),
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

【讨论】:

  • 很高兴为您提供帮助。如果对您有帮助,请将其标记为答案。谢谢。
猜你喜欢
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 2020-04-27
  • 2019-11-04
  • 1970-01-01
相关资源
最近更新 更多