【问题标题】:Caculate the total task created on firebase base on id flutter根据 id flutter 计算在 firebase 上创建的总任务
【发布时间】:2020-08-25 17:29:04
【问题描述】:

我想使用颤振计算在 Firebase 上创建的总任务。有没有办法使用颤振来做到这一点我必须使用 java 和 swift 来完成这个功能。这就是我存储任务的方式,它们是由 firebase (ID) 生成的。

在实时数据库中完成

final tasksData = Provider.of<Tasks>(context);
    final tasks = tasksData.tasks;
    print(tasks.length); // total tasks

Future<void> fetchAndSetProducts() async {
const url = 'https://firebaselink.firebaseio.com/tasks.json';
try {
  final response = await http.get(url);
  final extractedData = json.decode(response.body) as Map<String, dynamic>;
  final List<TodoList> loadedTasks = [];
  extractedData.forEach((taskId, taskData) {
    loadedTasks.add(TodoList(
      id: taskId, 
      name: taskData['name'],
      description: taskData['description'],
      date: DateTime.parse(taskData['date']),
      filename: taskData['filename'],
      location: taskData['location'],
      isCompleted: taskData['isCompleted'],
      notes: taskData['notes'],
    ));
  });
  _tasks = loadedTasks;
  notifyListeners();
} catch (error) {
  print(error);
  throw (error);
}
}

     List<TodoList> _tasks = [];

  List<TodoList> get tasks {
    return [..._tasks];
  }

更多问题在文本小部件中显示未来

  Future<void> refreshTasks(BuildContext context) async {
await Provider.of<Tasks>(context,listen: false).totalCompletedTask();
  }

Text( refreshTasks.toString()) 

错误: 明白啦: 闭包:(BuildContext) => 未来

【问题讨论】:

  • 你可以获取所有列表并使用长度方法计算总任务。
  • @VirenVVarasadiya 你好,那么你知道如何获取任务完成的总量,什么时候是真的,什么时候是假的?

标签: firebase flutter dart flutter-bloc


【解决方案1】:

您可以浏览每个文档并检查 isCompleted 是否为真,如果为真,则增加 totalTrue 变量的值,该变量将保存总的真数。

以下方法对你有用。

 getCount() async {
    int totalcount = 0;
    await FirebaseDatabase.instance
        .reference()
        .child("tasks")
        .once()
        .then((DataSnapshot snapshot) {
      Map<dynamic, dynamic> data = snapshot.value;
      data.forEach((key, value) {
        if (value['isCompleted']) {
          totalcount++;
        }
      });
    });

    print(totalcount);
  }

更新:

Future<int> fetchAndSetProducts() async {
  const url = 'https://firebaselink.firebaseio.com/tasks.json';
  try {
    int totalcount = 0;

    final response = await http.get(url);
    final extractedData = json.decode(response.body) as Map<String, dynamic>;
    extractedData.forEach((taskId, taskData) {
      if (taskData['isCompleted']) {
        totalcount++;
      }
    });
    print(totalcount);
    return totalcount;
  } catch (error) {
    print(error);
    throw (error);
  }
}

【讨论】:

  • 您好,我使用的是实时数据库而不是 Firestore,或者它也适用于实时数据库?
  • 对不起,这是我的错误,我没有关注数据库类型。但是您可以使用它的获取过程,并计算我的答案的逻辑。它也可以使用。如果您无法弄清楚,请尝试实现自己的自我。我将使用 firebase 实时数据库更新我的答案。
  • 嗨,你能更新一下你的答案吗?谢谢 想不通
  • 我在尝试编译后遇到了一个很长的错误。 [错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:PlatformException(错误,默认 FirebaseApp 未在此过程中初始化 com.example.personal_assistance。请务必先调用 FirebaseApp.initializeApp(Context)。,空)
  • 您必须为此使用 futurebuilder。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 2019-11-21
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多