Флаттер: фильтровать товары по категориям на уровне приложения? - PullRequest
0 голосов
/ 02 мая 2020

В настоящее время я пытаюсь разработать приложение, в котором товары категорически отображаются на отдельном экране или в классе с помощью ListView.builder ().

Мне нужно выбрать / выбрать категорию или подкатегорию, чтобы Я могу видеть продукты в виде списка. Я не вижу ничего на экране, если я не выбираю одну или несколько категорий ИЛИ подкатегорий. Я также могу отдать предпочтение различным категориям, и в представлении списка я вижу продукты, которые соответствуют любимому продукту. Если бы я выбрал подкатегорию, я должен видеть в списке только те продукты, которые видны в этой избранной подкатегории, а не вышестоящие категории. Если я предпочитаю более высокую категорию, все продукты подкатегорий должны отображаться в виде списка.

Но я беспокоюсь о производительности. Моя база данных будет работать на Firebase. Подходит ли для этого пожарный магазин? Я также читал, что реляционные базы данных больше подходят для таких вещей. Однако я никогда не работал с ним и хочу, чтобы избранное не только сохранялось на смартфоне. Я хотел бы, чтобы избранное вызывалось, когда пользователь входит в приложение с другого телефона.

Мой вопрос является скорее структурным вопросом. Лучше ли для производительности, если есть класс Category, в котором у всех высших и низших категорий есть список товаров, которые затем объединяются в виде списка (если, конечно, выбраны разные категории)?

Я имею в виду, если я перечисляю все продукты в одном списке и затем фильтрую их в коде (на уровне приложения), это совершенно не работает, верно?

Нужно ли иметь категорию класса? а отдельный класс подкатегории? Как бы вы go об этом? В моем мозгу полный хаос

класс Продукт:

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,
  ),
];

Я больше не знаю, что было бы более правильным с точки зрения того, как Я должен go вкл.

Спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...