【问题标题】:How to scroll Listview nested in Flutter如何滚动嵌套在 Flutter 中的 Listview
【发布时间】:2020-02-13 20:56:04
【问题描述】:

当我使用两个嵌套的 Listview 和 ListView.builder 时,它仍然滚动,但具有 shirnkSwap 属性的子 Listview.builder 不能再滚动,但我不想在小部件容器中使用 height 属性,因为它是很丑。

Flutter 1.9.4 SDK

//我的主屏幕

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Color(0xFFEEF0F2),
      appBar: AppBar(
        backgroundColor: Color(0xFF396DF0),
        elevation: 0,
        leading: LeadinguttonIcon(),
        title: Text('TheGoal'),
        actions: <Widget>[ActionIconButton()],
      ),
      body:
          ListView(children: <Widget>[TopHomeScreenBody(), BottomHomeScreen()]),
    );
  }
}```

**//  TopHomeScreenBody**

```class TopHomeScreenBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ClipPath(
      clipper: BodyClipper(),
      child: Container(
        color: Color(0xFF396DF0),
        padding: EdgeInsets.only(top: 10, right: 22, left: 22, bottom: 30),
        height: 250,
        width: double.infinity,
        child: Container(
          decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.all(Radius.circular(15))),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: <Widget>[MainText(), SubText()],
          ),
        ),
      ),
    );
  }
}```

**// BottomHomeScreen** 


```class BottomHomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
//  IT CAN SCROLL WHEN ADD HEIGHT BUT I
//  DONT WANT USE HEIGHT HERE BECAUSE VERY UGLY APP
//    height: 400,
      padding: EdgeInsets.all(25),
      decoration: BoxDecoration(
        color: Color(0xFFEEF0F2),
      ),
      child: ListView.builder(
        shrinkWrap: true,
        itemBuilder: (context, index) {
          return BottomGoalTitle(
            text: '${goalList[index].text}',
            decsText: '${goalList[index].decsText}',
            color: goalList[index].color,
            icon: goalList[index].icon,
          );
        },
        itemCount: goalList.length,
      ),
    );
  }
}

感谢您的阅读。希望得到您的帮助!

【问题讨论】:

  • 仍然想知道为什么你必须像这样在父窗口小部件上使用 ListView,ListView(children: [TopHomeScreenBody(), BottomHomeScreen()]),你为什么不把它改成 Column 呢?
  • 如果我将其更改为水平屏幕中的列,topscreenbottom() 将在顶部固定大小并且无法滚动,并且内容 bottomhomescreen() 仅在一点点区域中,由 topscreenbody() 审查。我尝试更改为列并在 listview.builder(bottomhomescreen) 中使用扩展小部件包装,它可以在垂直屏幕上滚动最好,但在水平屏幕上是不好的。
  • 对不起,不太明白你的意思,但是为什么你需要在可滚动小部件中的可滚动小部件?就像 ListView 中的 ListView 一样,我认为它不是使用 ListView 的最佳做法,如果您已经确定了主屏幕上的连续小部件,那么我认为使用 Colum 是最佳做法,如果孩子们有问题,您有修复孩子,不改变 Column,至于我,我总是在 SingleChildScrollView 中使用 Column,如果你能提供你想要创建的 UI,我会尽力帮助你创建它
  • 你能在 facebook 或类似的社交网络上接我吗,我需要 10 的帖子图片声望,我是新手

标签: listview flutter dart scrollable


【解决方案1】:

如果您的意思是不想让您的listview.builder 滚动,请尝试添加此physics: NeverScrollableScrollPhysics(),

【讨论】:

  • 我希望所有 listview.builder 都可以滚动。先生,我的问题犯了错误。
  • 我被理解了,在脚手架的主体中,我使用了 singlechildscrollview 中的列,在列中我有 2 个自定义小部件,tophomescreen 和 bottomscreen 小部件,在 bottomhomescreen 中有 listview.builder,我推送物理:NeverScrollableScrollPhysics() ,列中的所有小部件都可以滚动,非常感谢。
猜你喜欢
  • 2020-05-15
  • 2017-12-29
  • 2021-05-19
  • 1970-01-01
  • 2015-12-30
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
相关资源
最近更新 更多