如何根据listView项目更改屏幕颜色

问题描述 投票:0回答:2

当新项目出现在屏幕上时,我想进行水平列表视图和背景颜色更改像this我无法使用listview执行此操作,因为无法根据当前项目索引更改容器颜色有关如何执行此操作的任何想法?

PS。我制作了一个动画容器,它的子级是页面视图,但是我想要的是列表视图而不是页面视图

    class _MyHomePageState extends State<MyHomePage> {
  int _index = 0;
  List<Color> colors = [
  Colors.yallow,
  Colors.blue
  ];

  @override
  Widget build(BuildContext context) {
    final restData = Provider.of<ResturantsProvider>(context);
    final rest = restData.rest;

    return Scaffold(
      body: AnimatedContainer(
        duration: Duration(microseconds: 300),
        curve: Curves.linear,
        color: colors[_index],
        child: PageView.builder(
          onPageChanged: (i) {
            setState(() {
              _index = i;
            });
          },
          scrollDirection: Axis.horizontal,
          itemCount: rest.length,
          itemBuilder: (context, index) {
            return Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                SizedBox(
                  height: 50,
                ),
                LogoHomePage(
                  logoImg: rest[index].logoImg,
                ),
                ResturantListView(
                  restImg: rest[index].restImg,
                  restName: rest[index].restName,
                  restRate: rest[index].restRate,
                  restType: rest[index].restType,
                  time: rest[index].time,
                  color: rest[index].color,
                )
              ],
            );
          },
        ),
      ),
    );
  }
}
flutter flutter-animation flutter-listview
2个回答
0
投票
用VisibilityDetector包装您的listview子级(每个),>

VisibilityDetector( key: Key("yourKey"), onVisibilityChanged: (VisibilityInfo info) { //get visibilityInfo here //pass the index of child to parent here based on that parent changes color }, child: YourListItemChild(); )


0
投票
在容器中的列表视图中使用inview_notifier_list,将isInViewPortCondition设置为您的要求,然后更改容器的颜色
© www.soinside.com 2019 - 2024. All rights reserved.