Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 包含收藏夹项目的列表视图_Flutter_Listview_Dart_Favorites - Fatal编程技术网

Flutter 包含收藏夹项目的列表视图

Flutter 包含收藏夹项目的列表视图,flutter,listview,dart,favorites,Flutter,Listview,Dart,Favorites,我有一个带有项目的ListView.builder,我们可以点击一颗心添加到收藏夹中。我想将添加到收藏夹的所有项目放到另一个ListView.builder屏幕中。我也想要最喜欢的项目可以通过点击心形按钮从最喜欢的列表视图中删除。我怎么能做到?这是我的代码: 主屏幕。省道 import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; import '

我有一个带有项目的
ListView.builder
,我们可以点击一颗心添加到收藏夹中。我想将添加到收藏夹的所有项目放到另一个
ListView.builder
屏幕中。我也想要最喜欢的项目可以通过点击心形按钮从最喜欢的列表视图中删除。我怎么能做到?这是我的代码:

主屏幕。省道

import 'package:flutter/material.dart';
import 'package:cached_network_image/cached_network_image.dart';
import '../recyclerview/data.dart';
import 'package:chrolix/constants.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';

int itemCount = item.length;
List<bool> selected = new List<bool>();

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  initState() {
    for (var i = 0; i < itemCount; i++) {
    selected.add(false);
    }
    super.initState();
  }
 
  Icon notFavorite = Icon(Icons.favorite_border, size: 32,);
  Icon inFavorite = Icon(Icons.favorite, size: 32,);

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body:  ListView.builder(
        scrollDirection: Axis.vertical,
        physics: BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()),
        itemCount: itemCount,
        itemBuilder: (BuildContext context, int index) {
      return Container(
        child: new Row(
          children: <Widget>[
            //Image
            new Container(
              margin: new EdgeInsets.only(top: 5.0, left: 0.0),
              child: new CachedNetworkImage(
                imageUrl: item[index].imageURL,
                height: MediaQuery.of(context).size.width / 3,
                width: MediaQuery.of(context).size.width / 2,
                fit: BoxFit.cover,
              ),
            ),
            new Container(
              height: MediaQuery.of(context).size.width / 3,
              width: MediaQuery.of(context).size.width / 2,
              child : new Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
            //Text
                  new Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.start,
                  mainAxisSize: MainAxisSize.min,
                  children: <Widget>[
                    Spacer(),               
                   //Titre
                    Container(
                    padding: const EdgeInsets.only(top: 15.0 ),
                    child: Text(
                      item[index].title,
                      style: kItemTitle,
                      ),
                    ),
                    //Decription
                    Container(
                    padding: const EdgeInsets.only(left: 10.0, top: 15.0),
                    child:Text(
                      item[index].description,
                      style: kItemDescription,
                      ),
                    ),
                    Spacer(),
                  ],
                ),
                Container(
                padding: const EdgeInsets.only(top: 10.0),
                child: CountdownTimer(
                  daysSymbol: new Text("j "),
                  hoursSymbol: new Text(" : "),
                  minSymbol: new Text(" : "),
                  secSymbol: new Text(""),
                  endTime: item[index].countdown,
                  textStyle: TextStyle(fontSize: 28, fontWeight: FontWeight.bold),
                  onEnd: () {
              print('onEnd');
            },
                ),
                ),
                Container( 
                  padding: const EdgeInsets.only(left: 8.0, top: 8.0),
                  child: Row(
                  mainAxisAlignment: MainAxisAlignment.start,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    GestureDetector(
                    child: selected.elementAt(index) ? inFavorite : notFavorite,
                    onTap: () {
                      setState(() {
                        selected[index] = !selected.elementAt(index);
                      });
                    },
                ),
                ],),
              ),
              ],),
            ),        
          ],
        ),
      );
    }
    )
  );
}
}
import 'package:flutter/material.dart';
import 'package:chrolix/constants.dart';
import 'package:chrolix/nav.dart';
import 'package:get/get.dart';


class Favoris extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: //Put here the LisView.builder with the favorite items
    )
  }

}
我没有看到其他问题能回答我的问题。谢谢


更新:我使用了提供商的软件包

推荐的方法是使用。这用于将变量共享给树下的多个小部件

写这篇文章需要的不仅仅是StackOverflow的答案,所以我将把你链接到一篇来自Flatter的相关文章,这篇文章基本上解释了你想做的一切:


如果链接断开,您可以通过搜索“Simple app state management Flatter”找到它。

我犯了很多错误,除了感谢之外,其他都没用!