Flutter:在应用程序级别按类别过滤产品吗?

时间:2020-05-02 17:47:24

标签: database performance flutter dart categories

我目前正在尝试开发一个应用程序,其中使用ListView.builder()将产品分类显示在单独的屏幕或类中。

我必须选择/偏爱一个类别或子类别,以便可以在列表视图中查看产品。如果我未选择一个或多个类别或子类别,则在屏幕上看不到任何内容。我也可以选择不同的类别,在列表视图中,我可以看到与喜欢的产品匹配的产品。如果我偏爱子类别,那么我应该只在列表视图中看到在偏爱的子类别中看到的产品,而不是上级类别。 如果我希望使用更高的类别,则应该在列表视图中显示所有子类别的产品。

但是我担心表现。我的数据库将在Firebase上运行。消防员更适合这样做吗?我还阅读了关系数据库更适合此类情况。但是,我从未使用过它,我希望收藏夹不仅可以保存在智能手机上。我希望在用户用另一部手机登录该应用时调用收藏夹。

我的问题更多是一个结构性问题。如果存在一个Category类,该类别中所有较高和较低的类别每个都有一个带有产品的列表,然后将它们合并到列表视图中(当然,如果选择了不同的类别),这样做对性能是否更好?

我的意思是,如果我将所有产品都列在一个列表中,然后再在代码中过滤它们(在应用程序级别),那是完全不对的,对吧?

我必须有一个类别类别和一个单独的子类别类别吗?你会怎么做?我脑子里全乱了

类产品:

import 'package:flutter/material.dart';

class Product {
  final String id;
  final String title;
  final List<String> imagesPath;
  final String description;
  final Color categoryColor;

  Product({
    @required this.id,
    @required this.title,
    @required this.imagesPath,
    @required this.description,
    @required this.categoryColor,
  });
}

课程类别:

import 'package:flutter/material.dart';
import '../models/Product.dart';

class Category {
  final String title;
  final Color color;
  bool isFavourite;
  final List<Product> products;

  Category({@required this.title, @required this.color, this.isFavourite = false, this.products});
}

List<Category> categories = [
  Category(
    title: 'Automobile',
    color: Colors.lightBlue,
    isFavourite: false,
  ),
];

我不再知道哪一种方法更正确。

谢谢:)

1 个答案:

答案 0 :(得分:0)

我建议使用 Cloud Firestore,因为它提供了 Firebase 实时数据库不提供的query functionalities

您可以查看我在 here 中发布的类似答案,我在其中演示了查询 Firestore 数据并根据所选项目过滤显示的数据。