微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter - 如何为可滑动的收藏夹实现回调父级?

如何解决Flutter - 如何为可滑动的收藏夹实现回调父级?

我到处搜索它,但仍然对如何制作可滑动的收藏夹感到困惑。我尝试实现回调但没有任何反应,爱图标没有变成我想要的。

这是例子。

enter image description here

我想将该图标更改为实心图标,以及其他明智的,但仍然没有改变这里是我的容器列表和可滑动值。

视频列表

    class VideoList extends StatefulWidget {
      final List list;
      final int userId;
      final List<Favorite> favorites;

      VideoList(this.list,this.userId,this.favorites);

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

    class _VideoListState extends State<VideoList> {
      bool isFavorite;

      @override
      void initState() {
        print('yt_playlist : ${widget.list}');
        print('user_favorite : ${widget.favorites}');
        isFavorite = false;
        super.initState();
      }

      @override
      Widget build(BuildContext context) {
        return ListView.builder(
          itemCount: widget.list == null ? 0 : widget.list.length,itemBuilder: (context,index) {
            String ytVideoId = widget.list[index]['contentDetails']['videoId'];
            for (var item in widget.favorites) {
              if (ytVideoId == item.videoId) {
                isFavorite = true;
              } else {
                isFavorite = false;
              }
            }

            print('value ${widget.userId}');
            print('videoId ${widget.list[index]['contentDetails']['videoId']}');
            return SlidableWidget(
              child: Container(
                padding: EdgeInsets.fromLTRB(16,20,16,16),child: Column(
                  children: <Widget>[
                    Divider(),GestureDetector(
                      onTap: () {
                        Navigator.push(
                          context,MaterialPageRoute(
                            builder: (context) => VideoPlayer(
                                url:
                                    "http://youtube.com/embed/${widget.list[index]['contentDetails']['videoId']}"),),);
                      },child: Container(
                        height: 238,decoration: Boxdecoration(
                          image: decorationImage(
                            image: NetworkImage(widget.list[index]['snippet']
                                ['thumbnails']['high']['url']),Padding(
                      padding: EdgeInsets.all(20),child: Text(widget.list[index]['snippet']['title']),],isFavorite: isFavorite,userId: widget.userId,videoId: widget.list[index]['contentDetails']['videoId'],onFavoriteChange: (bool val) {
                setState(() {
                  isFavorite = val;
                });
              },);
          },);
      }
    }

这是我实现回调的地方

可滑动

  class SlidableWidget<T> extends StatelessWidget {
    Widget child;
    bool isFavorite;
    Function(bool) onFavoriteChange;
    int userId;
    String videoId;

    SlidableWidget(
        {this.child,this.isFavorite,this.videoId,this.onFavoriteChange});

    @override
    Widget build(BuildContext context) {
      return Slidable(
        actionPane: SlidableDrawerActionPane(),child: child,actions: <Widget>[
          IconSlideAction(
            caption: 'Detail',color: redLight2,icon: Icons.details,onTap: () {},)
        ],secondaryActions: <Widget>[
          IconSlideAction(
            caption: 'Favorites',color: blueLightColor,icon: isFavorite ? Icons.favorite : Icons.favorite_outline,onTap: () {
              print(isFavorite);
              isFavorite ? onFavoriteChange(false) : onFavoriteChange(true);
            },);
    }
  }

就是这个问题,有人能帮我解决这个问题吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?