flutter GridView在SingleChildScrollView中不工作

kqhtkvqz  于 2023-05-08  发布在  Flutter
关注(0)|答案(2)|浏览(140)

我有一个列,在这个列里面,我有SingleChildScrollView,在它里面我有另一个列。这是行不通的:

Column(
      children: <Widget>[
        SliderWidget(SliderList, "text", "text"),
        const SizedBox(height: 20),
        SingleChildScrollView(
          child: Column(
            children: [
              text("Some text"),
              Expanded(
                child: Padding(
                  padding: const EdgeInsets.all(24.0),
                  child:
                      GridListing(FavouriteList, false),
                ),
              ),
            ],
          ),
        ),
      ],
    ),

请给我一个替代的建议。

iyzzxitl

iyzzxitl1#

SingleChildScrollViewExpanded都试图获得无限高。在GridView上提供高度将解决该问题。
要理解溢出,我们需要检查SingleChildScrollView是如何获取大小和设置子项的。为了获得可用空间,我们需要用Expanded小部件 Package SingleChildScrollView
现在我们可以用SizedBox(height:x Package GridView

return Scaffold(
  body: LayoutBuilder(
    builder: (context, constraints) => Column(
      children: <Widget>[
        // SliderWidget(SliderList, "text", "text"),
        const SizedBox(height: 20),
        Expanded(
          child: SingleChildScrollView(
            child: Column(
              children: [
                Text("Some text"),
                SizedBox(
                  height: constraints.maxHeight * .6,
                  child: GridView.count(
                    crossAxisCount: 2,
                    crossAxisSpacing: 4,
                    mainAxisSpacing: 4,
                    children: List.generate(
                      222,
                      (index) => Container(
                        color: Colors.red,
                        width: 200,
                        height: 200,
                        child: Text(" $index"),
                      ),
                    ),
                  ),
                ),
                Container(
                  height: 500,
                  color: Colors.pink,
                ),
              ],
            ),
          ),
        ),
      ],
    ),
  ),
);

更好的方法是使用CustomScrollView

ccrfmcuu

ccrfmcuu2#

如果你使用IntrinsicHeightwidget围绕内列flutter可以显示你的widget树。

Column(
  children: <Widget>[
    SliderWidget(SliderList, "text", "text"),
    const SizedBox(height: 20),
    SingleChildScrollView(
      child: IntrinsicHeight( // added widget
        child: Column(
          children: [
            text("Some text"),
            Expanded(
              child: Padding(
                padding: const EdgeInsets.all(24.0),
                child:
                    GridListing(FavouriteList, false),
              ),
            ),
          ],
        ),
      ),
    ),
  ],
),

相关问题