我如何获得下面给出的代码的相似计数?

亚历克斯

这是构成Brew并转到BrewList的BrewTile。列表中的每个酿造都有一个类似的iconButton。我如何才能使任何用户喜欢该啤酒或与该啤酒不同。它不必显示喜欢该啤酒的用户的名称。它只需要显示喜欢的总数。而且用户还必须能够与第二次点击不同。

class Brew {
  final String id;
  final String name;
  final String sugars;
  final int strength;
  final int likeCount;

  Brew({this.id, this.name, this.sugars, this.strength, 
  this.likeCount});
  }


   class BrewData {
  final String id;
  final String name;
  final String sugars;
  final int strength;
  final int likeCount;

  BrewData({this.id, this.name, this.sugars, this.strength, 
  this.likeCount});


factory BrewData.fromDoc(DocumentSnapshot doc) {
    return BrewData(
      id: doc.documentID,
      name: doc['name'],
      sugars: doc['sugars'],
      strength: doc['strength'],
      likeCount: doc['likeCount'],
    );
  }

}






      class BrewTile extends StatefulWidget {
          final Brew brew;


          BrewTile({ this.brew});

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

        class _BrewTileState extends State<BrewTile> {
         int _likeCount = 0;
          bool _isLiked = false;

         @override
          Widget build(BuildContext context) {
            return Column(
              children: <Widget>[
              Padding(
              padding: const EdgeInsets.only(top: 8.0),
              child: Card(
                margin: EdgeInsets.fromLTRB(20.0, 6.0, 20.0, 0.0),
                child: ListTile(
                  leading: CircleAvatar(
                    radius: 25.0,
                    backgroundColor: Colors.brown[brew.strength],
                    backgroundImage: 
                    AssetImage('assets/coffee_icon.png'),
                  ),
                  title: Text(brew.name),
                  subtitle: Text('Takes ${brew.sugars} sugar(s)'),
                ),
              ),
            ),
                 Padding(
                  padding: EdgeInsets.symmetric(horizontal: 8.0),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      Row(
                        children: <Widget>[
                          IconButton(
                            icon: _isLiked
                                ? Icon(
                                    Icons.favorite,
                                    color: Colors.blue,
                                  )
                                : Icon(Icons.favorite_border),
                            iconSize: 30.0,
                            onPressed: () {
                              if (_isLiked) {
                          _likeCount++;
                          _isLiked = false;
                          print(_likeCount);
                          DatabaseService()
                              .updateLikes(id: widget.brew.id, value: 
       1);
                        } else {
                          print(true);
                          _likeCount--;
                          _isLiked = true;
                          DatabaseService()
                              .updateLikes(id: widget.brew.id, value: 
      -1);
                          print(_likeCount);
                        }
                      });
                            },
                          ),
                          Padding(
                            padding: EdgeInsets.symmetric(horizontal: 
                              12.0),
                            child: Text(
                              '${_likeCount.toString()} likes',
                              style: TextStyle(
                                fontSize: 16.0,
                                fontWeight: FontWeight.bold,
                              ),
                            ),
                          ),
                        ],
                      )
                    ],
                  ),
                )
              ],
            );
          }
        }



List<Brew> _brewListFromSnapshot(QuerySnapshot snapshot) {
    return snapshot.documents.map((doc) {
      //print(doc.data);
      return Brew(
          id: doc.documentID ?? '',
          name: doc.data['name'] ?? '',
          strength: doc.data['strength'] ?? 0,
          sugars: doc.data['sugars'] ?? '0',
          likeCount: doc.data['likeCount'] ?? 0,);
    }).toList();
  }


Future<void> updateLikesCount({String id int value}) async {
    return await brewCollection
        .document(id)
        .updateData({'likeCount': FieldValue.increment(value)});
  }

 Future<void> updateBrewData(String sugars, String name, int strength, int likeCount) async {
    return await brewCollection.document(uid).setData({
      'sugars': sugars,
      'name': name,
      'strength': strength,
      'likeCount': likeCount,
    });
  }


 Stream<BrewData> get brewData {
    return brewCollection.document(uid).snapshots().map(_brewDataFromSnapshot);
  }

它在控制台中给出此错误。

flutter: true
flutter: -1
[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: type 'MethodChannelFieldValue' is not a subtype of type 'FieldValuePlatform'
#0      FieldValue.increment 
package:cloud_firestore/src/field_value.dart:51
#1      DatabaseService.updateLikesCount 
package:myblogprofile/services/database.dart:75
#2      _BrewTileState.build.<anonymous closure>.<anonymous closure> 
package:myblogprofile/…/home/brew_tile.dart:77
#3      State.setState 
package:flutter/…/widgets/framework.dart:1148
#4      _BrewTileState.build.<anonymous closure> 
package:myblogprofile/…/home/brew_tile.dart:65
#5      _InkResponseState._handleTap 
package:flutter/…/material/ink_well.dart:706
#6      _InkResponseState.build.<anonymous closure> 
package:flutter/…/material/ink_well.dart:789
#7      GestureRecognizer.invokeCallback 
package:flutter/…/gestures/recognizer.dart:182
#8      TapGestureRecognizer.handleTapUp 
package:flutter/…/gestures/tap.dart:486
#9      BaseTapGestur<…>
第424节

好的,因此需要进行一些更改,我还没有时间进行测试,因此请尝试一下,并让我知道,如果您有麻烦,请稍后再提供帮助。

第一

class Brew {
  final String id;
  final String name;
  final String sugars;
  final int strength;

  Brew({this.id, this.name, this.sugars, this.strength});
}

第二名

//database.dart
 List<Brew> _brewListFromSnapshot(QuerySnapshot snapshot) {
    return snapshot.documents.map((doc) {
      //print(doc.data);
      return Brew(
          id: doc.documentID ?? '',
          name: doc.data['name'] ?? '',
          strength: doc.data['strength'] ?? 0,
          sugars: doc.data['sugars'] ?? '0');
    }).toList();
  }

//This is different from last time very important changes
Future<void> updateLikes({String id, int value}) async {
    return await brewCollection
        .document(id)
        .updateData({'likes': FieldValue.increment(value)});
  }

第三名

//brew_tile.dart
onPressed: () async {
                      setState(() {
                        if (_isLiked) {
                          print(true);
                          _likeCount--;
                          _isLiked = false;
                          DatabaseService()
                              .updateLikesCount(id: widget.brew.id, value: -1);
                          print(_likeCount);
                        } else {
                          _likeCount++;
                          _isLiked = true;
                          print(_likeCount);
                          DatabaseService()
                              .updateLikesCount(id: widget.brew.id, value: 1);
                        }
                      });
                    },

这应该工作仔细检查,并让我知道

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获得下面的SQL输出

来自分类Dev

我如何在Unity3D中获得下面链接中所附视频中显示的效果?

来自分类Dev

我如何获得下拉列表的价值

来自分类Dev

如何获得函数返回数组单行?在我的代码下面

来自分类Dev

如何获得下面所示格式的一部分数据?

来自分类Dev

我如何获得下一个标签

来自分类Dev

谁能教我下面给出的这个JS代码?

来自分类Dev

Javascript-如何避免if语句如下面给出的代码段?

来自分类Dev

回文的代码(下面给出的错误)

来自分类Dev

下面给出的代码是错误的吗?

来自分类Dev

我如何获得下拉选择的值并形成一个数字

来自分类Dev

我们如何获得下一个加载网页的响应

来自分类Dev

当我运行下面给出的代码时,我收到 java.sql.SQLSyntaxErrorException

来自分类Dev

下面的代码给出了奇怪的输出

来自分类Dev

下面给出的这行代码在android中的含义......?

来自分类Dev

我如何简化下面的替换代码

来自分类Dev

我如何获得正确的HTTP状态代码?

来自分类Dev

我如何获得CentOS内核源代码

来自分类Dev

如何获得包含?使用我的代码

来自分类Dev

如何更改我的代码以获得正确的输出

来自分类Dev

Twitter Bootstrap:如何获得下拉菜单的选定值?

来自分类Dev

如何在AFNetworking 2.0中获得下载进度?

来自分类Dev

如何在Materialize中获得下拉列表的值

来自分类Dev

如何在MVC中的Controller中获得下拉值

来自分类Dev

Twitter Bootstrap:如何获得下拉菜单的选定值?

来自分类Dev

如何获得下个月的当前日期

来自分类Dev

如何获得下拉菜单子列表以垂直排列

来自分类Dev

如何获得下拉菜单的选定值?

来自分类Dev

如何获得下一个分页“href”?

Related 相关文章

热门标签

归档