SingleChildScrollView无法与列表视图生成器一起使用

时间:2020-07-10 16:56:07

标签: flutter dart

尽管我使用SingleChildScrollView作为正文,但ListView在此小部件中不可滚动。 为了让我滚动小部件,我应该从页面的第一部分开始滚动,即列内的Stack,如果我尝试滚动ListView,它是不可滚动的,并且不会产生任何错误,例如render盒子溢出。

body: SingleChildScrollView(
    child: Container(
      //height: MediaQuery.of(context).size.height,
      width: double.infinity,
      decoration: BoxDecoration(
        gradient: LinearGradient(
          begin: Alignment.topCenter,
          end: Alignment.bottomCenter,
          colors: [
            Color(0xFF27233E),
            Color(0xFF160F3C),
            Color(0xFF1E1550),
            Color(0xFF241A5B),
          ],
        ),
      ),

 child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        crossAxisAlignment: CrossAxisAlignment.stretch,
        mainAxisSize: MainAxisSize.max,
        children: <Widget>[
          Container(
            height: 210,
            decoration: BoxDecoration(
                borderRadius: BorderRadius.only(
                  bottomLeft: Radius.circular(25.0),
                  bottomRight: Radius.circular(25.0),
                ),
                color: Colors.transparent.withOpacity(0.2)),
            width: MediaQuery.of(context).size.width,
            child: Card(
              color: Colors.orange,
              shape: RoundedRectangleBorder(
                  side: BorderSide(),
                  borderRadius: (BorderRadius.only(
                      bottomRight: Radius.circular(25.0),
                      bottomLeft: Radius.circular(25.0)))),
              child: Stack(
                children: <Widget>[
                  //Title
                  Positioned.fill(
                    top: 20,
                    left: 20,
                    child: Align(
                      alignment: Alignment.topCenter,
                      child: Text(
                        "Day: $currentDay",
                        style: TextStyle(
                            color: Colors.white,
                            fontFamily: "Montserrat",
                            fontSize: 31,
                            fontWeight: FontWeight.w900),
                      ),
                    ),
                  ),
                  Positioned.fill(
                    bottom: -17.0,
                    child: Align(
                      alignment: Alignment.centerRight,
                      child: Container(
                          padding: const EdgeInsets.only(right: 10.0),
                          child: Hero(
                              tag: 'assets/logos/biceps-icon.png',
                              child: Image(
                                image: AssetImage(
                                    'assets/logos/biceps-icon.png'),
                                height: 150.0,
                              ))),
                    ),
                  ),
                  Positioned.fill(
                    bottom: 50,
                    top: 20,
                    left: 20,
                    child: Align(
                      alignment: Alignment.bottomLeft,
                      child: Text(
                        "${dayMap['day$currentDay']}",
                        style: TextStyle(
                            color: Colors.white,
                            fontFamily: "Montserrat",
                            fontSize: 20,
                            fontWeight: FontWeight.w900),
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ),

  Container(
            height: MediaQuery.of(context).size.height,
            child: ListView.builder(
                itemCount: dayMap["workout"].length,
                physics: AlwaysScrollableScrollPhysics(),
                scrollDirection: Axis.vertical,
                itemBuilder: (context, index) {
                  return Padding(
                      padding: const EdgeInsets.all(2.0),
                      child: (Card(
                        shape: RoundedRectangleBorder(
                            side: BorderSide(
                                width: 3, color: Colors.indigo),
                            borderRadius:
                            (BorderRadius.circular(30))),
                        color: Colors.purpleAccent,
                        margin:
                        EdgeInsets.fromLTRB(20.0, 6.0, 20.0, 0.0),
                        child: ListTile(
                          leading: ClipOval(
                            child: CircleAvatar(
                              radius: 25.0,
                              backgroundColor: Colors.transparent,
                            ),
                          ),
                        ),
                      )));
                }),
          ),
        ],
      ),
    ),
  ),
);

} }

1 个答案:

答案 0 :(得分:1)

在Listview.builder函数中,尝试将Physics属性更改为 “ NeverScrollableScrollPhysics()”

 ListView.builder(
                itemCount: dayMap["workout"].length,
                physics: NeverScrollableScrollPhysics(),
                scrollDirection: Axis.vertical,
                itemBuilder: (context, index) {
                  return Padding(