即使使用SingleChildScrollView()包装column()后,也无法在小部件上滚动

时间:2020-07-20 10:57:20

标签: flutter listview singlechildscrollview

这是根窗口小部件。窗口小部件具有一个子的BuyerPostList(),它是窗口小部件的ListView类型。我删除了SingleChildScrollView()给出了渲染异常。添加后,错误不再出现,但页面仍不可滚动。

class PostsPage extends StatelessWidget {
  final AuthService _auth = AuthService();
  @override
  Widget build(BuildContext context) {
    return StreamProvider<List<BuyerPost>>.value(
        value: BuyerDatabaseService().buyerPosts,
    child:Scaffold(
      backgroundColor: Colors.white,
      appBar: header(context,isAppTitle: true),
        body:Container(
            child: SingleChildScrollView(
              child: Column(
                children: <Widget>[
                  BuyerPostList(),
                  SizedBox(height: 100,),
                ],
              ),
            ),
        ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: () {
          Navigator.push(
            context,
            MaterialPageRoute(builder: (context) => NewPost()),
          );
        },
        label: Text(
          'New',
          style: TextStyle(fontWeight:FontWeight.w900,color:Color.fromRGBO(0, 0, 0, 0.4),),
        ),
        icon: Icon(Icons.add,color:Color.fromRGBO(0, 0, 0, 0.4),),
        backgroundColor:Colors.white,
      ),
    ),
    );
  }
}


这是列表视图BuyerPostList小部件()

class BuyerPostList extends StatefulWidget {
  @override
  _BuyerPostListState createState() => _BuyerPostListState();
}

class _BuyerPostListState extends State<BuyerPostList> {
  @override
  Widget build(BuildContext context) {

    final posts = Provider.of<List<BuyerPost>>(context) ?? [];
    return ListView.builder(
      shrinkWrap: true,
      itemCount: posts.length,
      itemBuilder: (context, index) {
        return BuyerPostTile(post: posts[index]);
      },
    );
  }
}

我希望我的解释已经足够清楚。我将如何使其滚动? 预先感谢。

1 个答案:

答案 0 :(得分:1)

physics: NeverScrollableScrollPhysics(),内添加ListView.builder(

代码:

@override
  Widget build(BuildContext context) {

    final posts = Provider.of<List<BuyerPost>>(context) ?? [];
    return ListView.builder(
      shrinkWrap: true,
      physics: NeverScrollableScrollPhysics(),
      itemCount: posts.length,
      itemBuilder: (context, index) {
        return BuyerPostTile(post: posts[index]);
      },
    );
  }