Troca de desing
This commit is contained in:
@@ -1,14 +1,18 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ItemCategory {
|
||||
final String id;
|
||||
final String name;
|
||||
final String icon;
|
||||
final IconData icon;
|
||||
final Color color;
|
||||
final String description;
|
||||
final List<Subcategory> subcategories;
|
||||
|
||||
ItemCategory({
|
||||
const ItemCategory({
|
||||
required this.id,
|
||||
required this.name,
|
||||
required this.icon,
|
||||
required this.color,
|
||||
required this.description,
|
||||
required this.subcategories,
|
||||
});
|
||||
@@ -17,9 +21,13 @@ class ItemCategory {
|
||||
class Subcategory {
|
||||
final String id;
|
||||
final String name;
|
||||
final String examples;
|
||||
final String description;
|
||||
|
||||
Subcategory({required this.id, required this.name, required this.examples});
|
||||
const Subcategory({
|
||||
required this.id,
|
||||
required this.name,
|
||||
required this.description,
|
||||
});
|
||||
}
|
||||
|
||||
class ContextTag {
|
||||
@@ -28,7 +36,7 @@ class ContextTag {
|
||||
final String description;
|
||||
final String examples;
|
||||
|
||||
ContextTag({
|
||||
const ContextTag({
|
||||
required this.id,
|
||||
required this.name,
|
||||
required this.description,
|
||||
@@ -36,174 +44,188 @@ class ContextTag {
|
||||
});
|
||||
}
|
||||
|
||||
// Categorias principais
|
||||
// Lista de categorias principais
|
||||
final List<ItemCategory> itemCategories = [
|
||||
ItemCategory(
|
||||
id: 'clothing',
|
||||
name: 'Roupa',
|
||||
icon: '👕',
|
||||
icon: Icons.checkroom_rounded,
|
||||
color: const Color(0xFFEC4899),
|
||||
description: 'Peças de vestuário',
|
||||
subcategories: [
|
||||
Subcategory(
|
||||
id: 'casual',
|
||||
name: 'Casual',
|
||||
examples: 't-shirts, calças de ganga, hoodies',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'formal',
|
||||
name: 'Formal',
|
||||
examples: 'fatos, camisas, vestidos de cerimónia',
|
||||
description: 'fato, camisa, blazer, vestido',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'casual',
|
||||
name: 'Casual',
|
||||
description: 't-shirt, jeans, hoodie',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'sportswear',
|
||||
name: 'Sportswear',
|
||||
examples: 'leggings, tops de treino, shorts',
|
||||
description: 'leggings, calções, top desportivo',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'outerwear',
|
||||
name: 'Outerwear',
|
||||
examples: 'casacos, impermeáveis, parkas',
|
||||
description: 'casaco, blusão, sobretudo',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'underwear',
|
||||
name: 'Underwear',
|
||||
examples: 'roupa interior, meias',
|
||||
description: 'cuecas, meias, sutiãs',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'sleepwear',
|
||||
name: 'Sleepwear',
|
||||
examples: 'pijamas, roupões',
|
||||
description: 'pijamas, roupões',
|
||||
),
|
||||
],
|
||||
),
|
||||
ItemCategory(
|
||||
id: 'electronics',
|
||||
name: 'Eletrónica',
|
||||
icon: '💻',
|
||||
icon: Icons.devices_other_rounded,
|
||||
color: const Color(0xFF8B5CF6),
|
||||
description: 'Dispositivos e acessórios tecnológicos',
|
||||
subcategories: [
|
||||
Subcategory(
|
||||
id: 'computers',
|
||||
name: 'Computers',
|
||||
examples: 'portáteis, tablets',
|
||||
name: 'Computadores',
|
||||
description: 'portátil, tablet',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'phones',
|
||||
name: 'Phones',
|
||||
examples: 'smartphones, earphones',
|
||||
name: 'Telemóveis',
|
||||
description: 'smartphone, smartwatch',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'cameras',
|
||||
name: 'Cameras',
|
||||
examples: 'máquinas fotográficas, action cams',
|
||||
id: 'audio',
|
||||
name: 'Áudio',
|
||||
description: 'auscultadores, colunas',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'cables',
|
||||
name: 'Cables',
|
||||
examples: 'carregadores, cabos USB, adaptadores',
|
||||
name: 'Cabos e Carregadores',
|
||||
description: 'USB, power bank',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'cameras',
|
||||
name: 'Câmaras',
|
||||
description: 'fotográfica, GoPro, drone',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'gaming',
|
||||
name: 'Gaming',
|
||||
examples: 'consolas, comandos, jogos',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'audio',
|
||||
name: 'Audio',
|
||||
examples: 'headphones, colunas bluetooth',
|
||||
description: 'consola, comandos',
|
||||
),
|
||||
],
|
||||
),
|
||||
ItemCategory(
|
||||
id: 'footwear',
|
||||
name: 'Calçado',
|
||||
icon: '👟',
|
||||
icon: Icons.hiking_rounded,
|
||||
color: const Color(0xFFF59E0B),
|
||||
description: 'Sapatos, botas, sandálias',
|
||||
subcategories: [
|
||||
Subcategory(
|
||||
id: 'casual',
|
||||
name: 'Casual',
|
||||
examples: 'sapatilhas, loafers',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'formal',
|
||||
name: 'Formal',
|
||||
examples: 'sapatos de salto, mocassins',
|
||||
description: 'sapatos de vestir',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'casual',
|
||||
name: 'Casual',
|
||||
description: 'sapatilhas do dia-a-dia',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'sport',
|
||||
name: 'Sport',
|
||||
examples: 'ténis de corrida, chuteiras',
|
||||
name: 'Desporto',
|
||||
description: 'ténis de corrida, futebol',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'outdoor',
|
||||
name: 'Outdoor',
|
||||
examples: 'botas de caminhada, sandálias',
|
||||
description: 'botas de montanha',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'sandals',
|
||||
name: 'Sandálias',
|
||||
description: 'chinelos, sandálias',
|
||||
),
|
||||
],
|
||||
),
|
||||
ItemCategory(
|
||||
id: 'accessories',
|
||||
name: 'Acessórios',
|
||||
icon: '🎒',
|
||||
icon: Icons.work_outline_rounded,
|
||||
color: const Color(0xFF10B981),
|
||||
description: 'Bolsas, relógios, óculos, bijuteria',
|
||||
subcategories: [
|
||||
Subcategory(
|
||||
id: 'bags',
|
||||
name: 'Bags',
|
||||
examples: 'mochilas, malas, bolsas',
|
||||
name: 'Malas e Bolsas',
|
||||
description: 'mochila, mala, carteira',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'watches',
|
||||
name: 'Watches',
|
||||
examples: 'relógios analógicos e digitais',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'eyewear',
|
||||
name: 'Eyewear',
|
||||
examples: 'óculos de sol, óculos de grau',
|
||||
name: 'Relógios',
|
||||
description: 'relógios analógicos e digitais',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'jewelry',
|
||||
name: 'Jewelry',
|
||||
examples: 'colares, pulseiras, brincos',
|
||||
name: 'Joias e Bijuteria',
|
||||
description: 'colares, anéis, brincos',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'eyewear',
|
||||
name: 'Óculos',
|
||||
description: 'óculos de sol, graduados',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'hats',
|
||||
name: 'Chapéus',
|
||||
description: 'bonés, chapéus, gorros',
|
||||
),
|
||||
Subcategory(id: 'hats', name: 'Hats', examples: 'bonés, chapéus, gorros'),
|
||||
Subcategory(id: 'belts', name: 'Belts', examples: 'cintos'),
|
||||
],
|
||||
),
|
||||
ItemCategory(
|
||||
id: 'documents',
|
||||
name: 'Documentos',
|
||||
icon: '📄',
|
||||
icon: Icons.description_rounded,
|
||||
color: const Color(0xFFEF4444),
|
||||
description: 'Passaporte, cartões, papéis importantes',
|
||||
subcategories: [
|
||||
Subcategory(
|
||||
id: 'identity',
|
||||
name: 'Identity',
|
||||
examples: 'passaporte, BI, carta de condução',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'health',
|
||||
name: 'Health',
|
||||
examples: 'cartão de saúde, receitas',
|
||||
name: 'Identidade',
|
||||
description: 'cartão de cidadão, carta de condução',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'travel',
|
||||
name: 'Travel',
|
||||
examples: 'bilhetes, reservas, seguros',
|
||||
name: 'Viagem',
|
||||
description: 'passaporte, visto',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'financial',
|
||||
name: 'Financial',
|
||||
examples: 'cartões de crédito/débito',
|
||||
id: 'cards',
|
||||
name: 'Cartões',
|
||||
description: 'crédito, débito, fidelização',
|
||||
),
|
||||
Subcategory(
|
||||
id: 'health',
|
||||
name: 'Saúde',
|
||||
description: 'cartão de saúde, receitas',
|
||||
),
|
||||
],
|
||||
),
|
||||
ItemCategory(
|
||||
id: 'other',
|
||||
name: 'Outros',
|
||||
icon: '📦',
|
||||
icon: Icons.inventory_2_rounded,
|
||||
color: const Color(0xFF64748B),
|
||||
description: 'Tudo o resto',
|
||||
subcategories: [],
|
||||
),
|
||||
@@ -291,3 +313,12 @@ List<String> getAutoContextTags(String categoryId, String subcategoryId) {
|
||||
|
||||
return autoTags[key] ?? [];
|
||||
}
|
||||
|
||||
/// Helper to fetch a category by id, falling back to "Outros".
|
||||
ItemCategory categoryById(String? id) {
|
||||
if (id == null) return itemCategories.last;
|
||||
return itemCategories.firstWhere(
|
||||
(c) => c.id == id,
|
||||
orElse: () => itemCategories.last,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user