代码之家  ›  专栏  ›  技术社区  ›  Benjamin user12576004

将容器添加到棉条中

  •  0
  • Benjamin user12576004  · 技术社区  · 6 年前

    我刚开始了解条子,除了那些以“条子”开头的小部件外,它们似乎不适用于任何其他的颤振部件。我试着添加一个 Container 所以我可以补充 BorderRadius 来装饰这个名单。但我有个错误:

    收到类型为RenderSliverToBoxAdapter的子级。

    以下是我目前为止的代码:

    ...
    SliverFillRemaining(
      child: SliverToBoxAdapter(
        child: Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.only(
              topLeft: Radius.circular(36),
              topRight: Radius.circular(36),
            ),
          ),
          child: SliverPadding(
            padding: const EdgeInsets.all(16),
            sliver: SliverFixedExtentList(
              itemExtent: 50.0,
              delegate: SliverChildBuilderDelegate(
                (BuildContext context, int index) {
                  return Container(
                    alignment: Alignment.center,
                    color: Colors.lightBlue[100 * (index % 9)],
                    child: Text('List Item $index'),
                  );
                },
              ),
            ),
          ),
        ),
      ),
    ),
    ...
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   dlohani    6 年前

    [更新]

    ...
        SliverFixedExtentList(
          itemExtent: 50.0,
          delegate: SliverChildBuilderDelegate(
            (BuildContext context, int index) {
              return Container(
                alignment: Alignment.center,
                color: Colors.lightBlue[100 * (index % 9)],
                child: Text('List Item $index'),
              );
            },
          ),
        ),
        ...
    

    以前的

    你已经在错误中得到了你的答案,你的slivefillremaining不使用slifer,它使用应该是widget的子控件

    ...
    SliverFillRemaining(
        hasScrollBody: true,
        child: Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.only(
              topLeft: Radius.circular(36),
              topRight: Radius.circular(36),
            ),
          ),
          child: Padding(
            padding: const EdgeInsets.all(16),
            child: ListView.builder(
              itemCount: 20,
              physics: NeverScrollableScrollPhysics(), //adding this line will disable the scrolling and listview and so the CustomScrollView should work as a single scroll view
              itemBuilder: (_, __) => ListTile(
                title: Text("Item"),
              ),
            ),
          ),
        ),
      ),
    ...
    
        2
  •  0
  •   Benjamin user12576004    6 年前

    NestedScrollView 而不是 CustomScrollView .

    return Scaffold(
      body: NestedScrollView(
        headerSliverBuilder: (context, innerBoxIsScrolled) {
          return <Widget>[
            SliverAppBar(
              floating: false,
              pinned: true,
              snap: false,
              elevation: 0,
              expandedHeight: 150.0,
              brightness: DynamicTheme.of(context).brightness,
              flexibleSpace: FlexibleSpaceBar(
                title: Text(assignment.name),
              ),
            ),
          ];
        },
        body: Container(
          decoration: BoxDecoration(
            color: Colors.red,
            borderRadius: BorderRadius.only(
              topLeft: Radius.circular(36),
              topRight: Radius.circular(36),
            ),
          ),
          child: ListView.builder(
            itemExtent: 50.0,
            itemBuilder: (context, index) {
              return Container(
                alignment: Alignment.center,
                color: Colors.lightBlue[100 * (index % 9)],
                child: Text('List Item $index'),
              );
            },
          ),
        ),
      ),
    );
    
    推荐文章