颤振listview底部溢出

时间:2019-11-15 20:47:26

标签: listview flutter widget height

在flutter应用程序中有两个水平列表视图。当放置第二个列表视图时出现错误。 我使用nestedscrollview来滚动页面,但是这个问题没有解决。如何管理小部件的高度,以便不会发生此错误?我尝试为第二个listview设置高度,但仍然出错 看我的代码:

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
        theme: ThemeData(
          fontFamily: "Vazir",
          primaryColor: Colors.red,
          accentColor: Colors.green,
        ),
        debugShowCheckedModeBanner: false,
        home: Directionality(
          textDirection: TextDirection.rtl,
          child: Scaffold(
              drawer: myDrawerLayout(context),
              body: NestedScrollView(
                headerSliverBuilder: (context, bool innerScroll) {
                  return <Widget>[
                    SliverAppBar(
                        title: Text(
                      "فروشگاه",
                      style: TextStyle(fontFamily: "Vazir"),
                    ))
                  ];
                },
                body: Column(
                  children: <Widget>[
                    _imageSlider(),
                    _explanationTextForAmazingProduct(),//text for listview explanation
                    _SizedBox(
                      height: 190,
                      child: ListView.builder(
                          scrollDirection: Axis.horizontal,
                          padding: EdgeInsets.all(8),
                          shrinkWrap: true,
                          itemCount: productList.length,
                          itemBuilder: (BuildContext context, int index) {
                            return productList.isEmpty || productList == null
                                ? wiatingView()
                                : Card(
                                    child: Container(
                                      width: 200,
                                      height: 70,
                                      child: Column(
                                        children: <Widget>[
                                          Padding(
                                            padding:
                                                const EdgeInsets.only(top: 8),
                                            child: Container(
                                              width: 80,
                                              height: 80,
                                              decoration: BoxDecoration(
                                                  image: DecorationImage(
                                                      image: NetworkImage(
                                                          productList[index]
                                                              .getImage()))),
                                            ),
                                          ),
                                          Padding(
                                            padding: const EdgeInsets.only(
                                                right: 8, left: 8, top: 8),
                                            child: Center(
                                              child: Text(productList[index]
                                                  .getTitle()),
                                            ),
                                          ),
                                          Center(
                                            child: Text(
                                              productList[index].getPrice(),
                                              style: TextStyle(
                                                  color: Colors.green),
                                            ),
                                          ),
                                        ],
                                      ),
                                    ),
                                  );
                          }),
                    ),
                    explanationTextForMostSellProduct(),//text for second listview explanation
                    Expanded(
                      child: ListView.builder(
                          scrollDirection: Axis.horizontal,
                          padding: EdgeInsets.all(8),
                          shrinkWrap: true,
                          itemCount: productList.length,
                          itemBuilder: (BuildContext context, int index) {
                            return productList.isEmpty || productList == null
                                ? wiatingView()
                                : Card(
                                    child: Container(
                                      width: 200,
                                      height: 150,
                                      child: Column(
                                        children: <Widget>[
                                          Padding(
                                            padding:
                                                const EdgeInsets.only(top: 8),
                                            child: Container(
                                              width: 80,
                                              height: 80,
                                              decoration: BoxDecoration(
                                                  image: DecorationImage(
                                                      image: NetworkImage(
                                                          productList[index]
                                                              .getImage()))),
                                            ),
                                          ),
                                          Padding(
                                            padding: const EdgeInsets.only(
                                                right: 8, left: 8, top: 8),
                                            child: Center(
                                              child: Text(productList[index]
                                                  .getTitle()),
                                            ),
                                          ),
                                          Center(
                                            child: Text(
                                              productList[index].getPrice(),
                                              style: TextStyle(
                                                  color: Colors.green),
                                            ),
                                          ),
                                        ],
                                      ),
                                    ),
                                  );
                          }),
                    )
                  ],
                ),
              )),
        ));
  }

enter image description here

1 个答案:

答案 0 :(得分:0)

您应该使用高度:190而不是第一个ListView.builder覆盖第二个ListView.builder SizedBox,因为ListView.builder小部件具有无限的高度,因此您应该覆盖特定的高度。

示例:

 SizedBox(
  height: 190,
  child: ListView.builder(....