【问题标题】:using flutter ListView builder throwing error使用flutter ListView builder抛出错误
【发布时间】:2019-11-25 23:36:48
【问题描述】:

所以我正在尝试创建布局,但我遇到了错误,这是我的脚本

  Column(
      children: <Widget>[
        Container(
          decoration: new BoxDecoration(boxShadow: [
            new BoxShadow(
              color: Colors.black,
              blurRadius: 10.0,
            ),
          ]),
          child:
          Card(
              child: CarouselSlider(
                autoPlay: true,
                height: 120.0,
                items: [1, 2, 3, 4, 5].map((i) {
                  return Builder(
                    builder: (BuildContext context) {
                      return Container(
                          width: MediaQuery.of(context).size.width,
                          margin: EdgeInsets.all(1),
                          decoration: BoxDecoration(color: Colors.brown),
                          child: Text(
                            'text $i',
                            style: TextStyle(fontSize: 16.0),
                          ));
                    },
                  );
                }).toList(),
              )),
        ),
        Row(
          children: <Widget>[
            Container(
              width: MediaQuery.of(context).size.width * 0.70,
              child: Card(
                color: null,
                child: Padding(
                    padding: const EdgeInsets.all(10.0),
                    child: Text(
                      "Your Points : ",
                      style: TextStyle(fontSize: 15),
                    )),
              ),
            ),
          ],
        ),
        Expanded(child: populateHotProduct(),),
        Expanded(child: populateHotProduct(),),
      ],

  );

当我运行它时,我得到了这个错误

I/chatty (5867): uid=10080(com.tukangaplikasi.member_lf) Thread-2 相同的 187 行 I/flutter(5867):引发了另一个异常: RenderBox 未布置:RenderRepaintBoundary#46776 中继边界=up3需要油漆I/颤振(5867):══╡例外 通过渲染库捕获 ╞═════════════════════════════════════════════════ ════════ I/颤振( 5867):在 performLayout() 期间引发了以下断言: I/flutter (5867):BoxConstraints 强制使用无限宽度。我/颤动 (5867):这些无效的约束被提供给 RenderPositionedBox 的 layout() 函数由以下 I/flutter ( 5867):函数,它可能计算了无效的约束 问题:我/颤振(5867):_RenderListTile._layoutBox (package:flutter/src/material/list_tile.dart:1300:9) I/flutter ( 5867):有问题的约束是:I/flutter(5867):
BoxConstraints(w=Infinity, 0.0

我已经尝试将我的Expanded 更改为Flexible,但仍然没有帮助。

所以,populateHotProduct 的内部是ListView.Builder

return  ListView.builder(
        itemCount: hotlist.length,
        shrinkWrap: true,
        scrollDirection: Axis.horizontal,
        itemBuilder: (BuildContext context, int index) {
          return GestureDetector(
              onTap: () {
                print("Product detail");
              },
              child: Card(
                child: Container(
                  child: Column(
                    mainAxisSize: MainAxisSize.min,
                    children: <Widget>[
                      Image.network(
                          Configuration.url +
                              "assets/app_assets/" +
                              hotlist[index].productImage,
                          width: 100,
                          height: 100,
                          filterQuality: FilterQuality.low),
                      ListTile(
                        title: Center(
                            child: Text(
                          hotlist[index].productName,
                          style: TextStyle(fontSize: 23),
                        )),
                        subtitle: Center(
                            child: Text(
                          formatCurrency
                              .format(int.parse(hotlist[index].productPrice)),
                          style: TextStyle(color: Colors.red, fontSize: 15),
                        )),
                      ),
                    ],
                  ),
                ),
              ));
        });

顺便说一句,我故意打电话给populateHotProduct() 两次。我该如何解决它提前谢谢。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    当你给卡片的子容器一个宽度时,这个问题就解决了。我的猜测是列表View是水平滑动的,当你不给Container设置宽度时,Container会适应Max。

    Column(
            children: <Widget>[
                Container(
                    decoration: new BoxDecoration(boxShadow: [
                        new BoxShadow(
                            color: Colors.black,
                            blurRadius: 10.0,
                        ),
                    ]),
                    child:
                    Card(
                        child: Text('kakaka')),
                ),
                Row(
                    children: <Widget>[
                        Container(
                            width: MediaQuery.of(context).size.width * 0.70,
                            child: Card(
                                color: null,
                                child: Padding(
                                    padding: const EdgeInsets.all(10.0),
                                    child: Text(
                                        "Your Points : ",
                                        style: TextStyle(fontSize: 15),
                                    )),
                            ),
                        ),
                    ],
                ),
                Expanded(
                    child: ListView.builder(
                        itemCount: 3,
                        shrinkWrap: true,
                        scrollDirection: Axis.horizontal,
                        itemBuilder: (BuildContext context, int index) {
                            return GestureDetector(
                                onTap: () {
                                    print("Product detail");
                                },
                                child: Card(
                                    child: Container(
                                        width: 300,
                                        child: Column(
                                            mainAxisSize: MainAxisSize.min,
                                            children: <Widget>[
                                                Image.network(
                                                    'http://img1.juimg.com/151014/330555-151014213H140.jpg',
                                                    width: 100,
                                                    height: 100,
                                                    filterQuality: FilterQuality.low),
                                                ListTile(
                                                    title: Center(
                                                        child: Text(
                                                            '11111',
                                                            style: TextStyle(fontSize: 23),
                                                        )),
                                                    subtitle: Center(
                                                        child: Text(
                                                            'jjjj',
                                                            style: TextStyle(color: Colors.red, fontSize: 15),
                                                        )),
                                                ),
                                            ],
                                        ),
                                    ),
                                ));
                        }),),
    
                Expanded(
                    child: ListView.builder(
                        itemCount: 3,
                        shrinkWrap: true,
                        scrollDirection: Axis.horizontal,
                        itemBuilder: (BuildContext context, int index) {
                            return GestureDetector(
                                onTap: () {
                                    print("Product detail");
                                },
                                child: Card(
                                    child: Container(
                                        width: 300,
                                        child: Column(
                                            mainAxisSize: MainAxisSize.min,
                                            children: <Widget>[
                                                Image.network(
                                                    'http://img1.juimg.com/151014/330555-151014213H140.jpg',
                                                    width: 100,
                                                    height: 100,
                                                    filterQuality: FilterQuality.low),
                                                ListTile(
                                                    title: Center(
                                                        child: Text(
                                                            '11111',
                                                            style: TextStyle(fontSize: 23),
                                                        )),
                                                    subtitle: Center(
                                                        child: Text(
                                                            'jjjj',
                                                            style: TextStyle(color: Colors.red, fontSize: 15),
                                                        )),
                                                ),
                                            ],
                                        ),
                                    ),
                                ));
                        }),),
            ],
    
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 2021-02-14
      • 2019-05-20
      • 2021-12-30
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多