You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
samples/deeplink_store_example/lib/model/products_repository.dart

294 lines
6.0 KiB

// Copyright 2018-present the Flutter authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
enum Category {
all,
accessories,
clothing,
home,
}
class ProductsRepository {
static const _allProducts = <Product>[
Product(
category: Category.accessories,
id: 0,
name: 'Vagabond sack',
price: 120,
),
Product(
category: Category.accessories,
id: 1,
name: 'Stella sunglasses',
price: 58,
),
Product(
category: Category.accessories,
id: 2,
name: 'Whitney belt',
price: 35,
),
Product(
category: Category.accessories,
id: 3,
name: 'Garden strand',
price: 98,
),
Product(
category: Category.accessories,
id: 4,
name: 'Strut earrings',
price: 34,
),
Product(
category: Category.accessories,
id: 5,
name: 'Varsity socks',
price: 12,
),
Product(
category: Category.accessories,
id: 6,
name: 'Weave keyring',
price: 16,
),
Product(
category: Category.accessories,
id: 7,
name: 'Gatsby hat',
price: 40,
),
Product(
category: Category.accessories,
id: 8,
name: 'Shrug bag',
price: 198,
),
Product(
category: Category.home,
id: 9,
name: 'Gilt desk trio',
price: 58,
),
Product(
category: Category.home,
id: 10,
name: 'Copper wire rack',
price: 18,
),
Product(
category: Category.home,
id: 11,
name: 'Soothe ceramic set',
price: 28,
),
Product(
category: Category.home,
id: 12,
name: 'Hurrahs tea set',
price: 34,
),
Product(
category: Category.home,
id: 13,
name: 'Blue stone mug',
price: 18,
),
Product(
category: Category.home,
id: 14,
name: 'Rainwater tray',
price: 27,
),
Product(
category: Category.home,
id: 15,
name: 'Chambray napkins',
price: 16,
),
Product(
category: Category.home,
id: 16,
name: 'Succulent planters',
price: 16,
),
Product(
category: Category.home,
id: 17,
name: 'Quartet table',
price: 175,
),
Product(
category: Category.home,
id: 18,
name: 'Kitchen quattro',
price: 129,
),
Product(
category: Category.clothing,
id: 19,
name: 'Clay sweater',
price: 48,
),
Product(
category: Category.clothing,
id: 20,
name: 'Sea tunic',
price: 45,
),
Product(
category: Category.clothing,
id: 21,
name: 'Plaster tunic',
price: 38,
),
Product(
category: Category.clothing,
id: 22,
name: 'White pinstripe shirt',
price: 70,
),
Product(
category: Category.clothing,
id: 23,
name: 'Chambray shirt',
price: 70,
),
Product(
category: Category.clothing,
id: 24,
name: 'Seabreeze sweater',
price: 60,
),
Product(
category: Category.clothing,
id: 25,
name: 'Gentry jacket',
price: 178,
),
Product(
category: Category.clothing,
id: 26,
name: 'Navy trousers',
price: 74,
),
Product(
category: Category.clothing,
id: 27,
name: 'Walter henley (white)',
price: 38,
),
Product(
category: Category.clothing,
id: 28,
name: 'Surf and perf shirt',
price: 48,
),
Product(
category: Category.clothing,
id: 29,
name: 'Ginger scarf',
price: 98,
),
Product(
category: Category.clothing,
id: 30,
name: 'Ramona crossover',
price: 68,
),
Product(
category: Category.clothing,
id: 31,
name: 'Chambray shirt',
price: 38,
),
Product(
category: Category.clothing,
id: 32,
name: 'Classic white collar',
price: 58,
),
Product(
category: Category.clothing,
id: 33,
name: 'Cerise scallop tee',
price: 42,
),
Product(
category: Category.clothing,
id: 34,
name: 'Shoulder rolls tee',
price: 27,
),
Product(
category: Category.clothing,
id: 35,
name: 'Grey slouch tank',
price: 24,
),
Product(
category: Category.clothing,
id: 36,
name: 'Sunshirt dress',
price: 58,
),
Product(
category: Category.clothing,
id: 37,
name: 'Fine lines tee',
price: 58,
),
];
static List<Product> loadProducts({Category category = Category.all}) {
if (category == Category.all) {
return _allProducts;
} else {
return _allProducts.where((p) => p.category == category).toList();
}
}
static Product loadProduct({required int id}) {
return _allProducts.firstWhere((Product p) => p.id == id);
}
}
String getCategoryTitle(Category category) => switch (category) {
Category.all => 'All',
Category.accessories => 'Accessories',
Category.clothing => 'Clothing',
Category.home => 'Home Decorations'
};
class Product {
const Product({
required this.category,
required this.id,
required this.name,
required this.price,
});
final Category category;
final int id;
final String name;
final int price;
String get assetName => '$id-0.jpg';
String get assetName2X => '2.0x/$id-0.jpg';
String get assetPackage => 'shrine_images';
@override
String toString() => '$name (id=$id)';
}