动态ListView内的ListView(Pagewise)

时间:2019-06-17 18:47:57

标签: flutter dart

我还是很陌生,我想创建一个注释列表部分,其中子注释可以嵌套在父注释中。

我所做的是在动态ListView中创建一个ListView,在这种情况下,我使用了一个第三方库PagewiseListView进行延迟加载。但是在构建列表时出现了一些错误。

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: pageWiseBuilder(context, _story.kids ?? [], PAGE_SIZE),
    );
  }

  Widget pageWiseBuilder(BuildContext context, List<int> list, int pageSize) {
    if (list != null && list.length > 0) {
      return PagewiseListView(
        padding: EdgeInsets.all(15.0),
        pageSize: pageSize,
        itemBuilder: this.itemBuilder,
        pageFuture: (pageIndex) =>
            _repository.fetchComments(list, pageIndex * pageSize, pageSize),
      );
    } else {
      return Container();
    }
  }

  Widget itemBuilder(BuildContext context, Comment entry, int index) {
    return Column(
      children: <Widget>[
        ListTile(
          title: Text(entry.by ??= ""),
          subtitle: Html(
            data: unescape.convert(entry.text ??= ""),
            useRichText: true,
            onLinkTap: (url) {
              _launchURL(url);
            },
            showImages: true,
            renderNewlines: true,
          ),
        ),
        Divider(),
        Column(
          mainAxisSize: MainAxisSize.min,
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
            Expanded(
              child: SizedBox(height: 200.0,
                child: ListView.builder(
                  physics: ClampingScrollPhysics(),
                  shrinkWrap: true,
                  itemCount: 5,
                  itemBuilder: (context, index) {
                    return Padding(
                      padding: EdgeInsets.only(top: 8.0),
                      child: Text('Nested list item $index'),
                    );
                  },
                ),
              ),
            ),
          ],
        ),
      ],
    );
  }
  

I / flutter(885):引发了另一个异常:RenderFlex子级   弹性值非零,但传入的高度限制不受限制。

     

I / flutter(885):引发了另一个异常:RenderBox不是   布置:RenderFlex#a1031 relayoutBoundary = up6 NEEDS-PAINT   需求组成位更新

     

I / flutter(885):引发了另一个异常:RenderBox不是   布置:RenderFlex#11980 relayoutBoundary = up5 NEEDS-PAINT   需求组成位更新

     

I / flutter(885):引发了另一个异常:RenderFlex子级   弹性值非零,但传入的高度限制不受限制。

     

I / flutter(885):引发了另一个异常:RenderBox不是   布置:RenderFlex#a33b5 relayoutBoundary = up6 NEEDS-PAINT   需求组成位更新

     

I / flutter(885):引发了另一个异常:RenderBox不是   布置:RenderFlex#48c2a relayoutBoundary = up5 NEEDS-PAINT   需求组成位更新

     

I / flutter(885):引发了另一个异常:RenderBox不是   布置:RenderRepaintBoundary#d6726 relayoutBoundary = up4 NEEDS-PAINT   需求组成位更新

     

I / flutter(885):引发了另一个异常:   'package:flutter / src / rendering / sliver_multi_box_adaptor.dart':失败   断言:549行pos 12:'child.hasSize':不正确。

     

I / flutter(885):引发了另一个异常:NoSuchMethodError:   方法'>'在null上调用。

     

I / flutter(885):引发了另一个异常:   'package:flutter / src / rendering / sliver_multi_box_adaptor.dart':失败   断言:549行pos 12:'child.hasSize':不正确。

3 个答案:

答案 0 :(得分:1)

您的ListView必须包装有至少具有高度的Widget。

  Container(
    height: 100,
    child: ListView(
            scrollDirection: Axis.horizontal,
            children: <Widget>[],
            ),
 ),

答案 1 :(得分:0)

@MarianoZorrilla在删除Expanded和SizedBox小部件时是正确的。我不知道为什么以前不起作用。也许只是疲劳。

答案 2 :(得分:0)

我认为您需要删除代码中的所有Flexible,它对我有用。