动态内容PageView无法正常运行

时间:2019-09-05 10:38:08

标签: flutter flutter-layout

我尝试在pageview中添加动态内容,但没有显示综合浏览量视图。

class HomeFragment extends StatefulWidget {
  @override
  _HomeFragmentState createState() => _HomeFragmentState();
}

class _HomeFragmentState extends State<HomeFragment> {
  List<String> pagerItems = new List();

  @override
  void initState() {
    populatePager();
  }

  void populatePager() {
    pagerItems.add(
        "https://ecouponshop.com/wp-content/uploads/2016/04/20-848x470.jpg");
    pagerItems.add(
        "https://rukminim1.flixcart.com/flap/960/960/image/eb7785.jpg?q=50");
    pagerItems.add(
        "https://zamroo.s3.ap-south-1.amazonaws.com/images/product-images/home-garden/washing-machines/medium/20170803092151-23218.jpg");
    setState(() {
      pagerItems;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      height: double.infinity,
      child: Container(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            Container(
              height: 200.0,
              child: pager(),
            )
          ],
        ),
      ),
    );
  }

  Widget pager() {
    return PageView.builder(
        itemCount: pagerItems.length,
        physics: BouncingScrollPhysics(),
        itemBuilder: (BuildContext context, int index) {
          pagerBody(context, index);
        });
  }

}

1 个答案:

答案 0 :(得分:1)

您的代码中有几个错误,就像您忘记了super.initState()一样,您没有从itemBuilder返回任何小部件。并且您在pager.items内不必要地使用了setState。这是正确的代码。

class HomeFragment extends StatefulWidget {
  @override
  _HomeFragmentState createState() => _HomeFragmentState();
}

class _HomeFragmentState extends State<HomeFragment> {
  List<String> pagerItems = new List();

  @override
  void initState() {
    super.initState(); // you forgot this
    populatePager();
  }

  void populatePager() {
    setState(() {
      pagerItems.add("https://ecouponshop.com/wp-content/uploads/2016/04/20-848x470.jpg");
      pagerItems.add("https://rukminim1.flixcart.com/flap/960/960/image/eb7785.jpg?q=50");
      pagerItems.add("https://zamroo.s3.ap-south-1.amazonaws.com/images/product-images/home-garden/washing-machines/medium/20170803092151-23218.jpg");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      height: double.infinity,
      child: Container(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            Container(
              height: 200.0,
              child: pager(),
            )
          ],
        ),
      ),
    );
  }

  Widget pager() {
    return PageView.builder(
      itemCount: pagerItems.length,
      physics: BouncingScrollPhysics(),
      itemBuilder: (BuildContext context, int index) {
        return pagerBody(context, index); // you forgot this
      },
    );
  }
}