created different models
This commit is contained in:
158
lib/constants/cooking_units.dart
Normal file
158
lib/constants/cooking_units.dart
Normal file
@@ -0,0 +1,158 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../models/unit.dart' show Unit;
|
||||
import '../src/enums.dart';
|
||||
|
||||
abstract class CookingUnits {
|
||||
// Fluid volume units
|
||||
static Unit get teaspoon => Unit(
|
||||
'teaspoon',
|
||||
UnitType.fluid,
|
||||
system: System.imperial,
|
||||
);
|
||||
|
||||
static Unit get tablespoon => Unit(
|
||||
'tablespoon',
|
||||
UnitType.fluid,
|
||||
system: System.imperial,
|
||||
);
|
||||
|
||||
static Unit get fluidOunce => Unit(
|
||||
'fluid ounce',
|
||||
UnitType.fluid,
|
||||
system: System.imperial,
|
||||
);
|
||||
|
||||
static Unit get cup => Unit(
|
||||
'cup',
|
||||
UnitType.fluid,
|
||||
system: System.imperial,
|
||||
);
|
||||
|
||||
static Unit get pint => Unit(
|
||||
'pint',
|
||||
UnitType.fluid,
|
||||
system: System.imperial,
|
||||
);
|
||||
|
||||
static Unit get quart => Unit(
|
||||
'quart',
|
||||
UnitType.fluid,
|
||||
system: System.imperial,
|
||||
);
|
||||
|
||||
static Unit get gallon => Unit(
|
||||
'gallon',
|
||||
UnitType.fluid,
|
||||
system: System.imperial,
|
||||
);
|
||||
|
||||
static Unit get milliliter => Unit(
|
||||
'milliliter',
|
||||
UnitType.fluid,
|
||||
);
|
||||
|
||||
static Unit get liter => Unit(
|
||||
'liter',
|
||||
UnitType.fluid,
|
||||
);
|
||||
|
||||
// Weight units
|
||||
static Unit get ounce => Unit(
|
||||
'ounce',
|
||||
UnitType.weight,
|
||||
system: System.imperial,
|
||||
);
|
||||
|
||||
static Unit get pound => Unit(
|
||||
'pound',
|
||||
UnitType.weight,
|
||||
system: System.imperial,
|
||||
);
|
||||
|
||||
static Unit get gram => Unit(
|
||||
'gram',
|
||||
UnitType.weight,
|
||||
);
|
||||
|
||||
static Unit get kilogram => Unit(
|
||||
'kilogram',
|
||||
UnitType.weight,
|
||||
);
|
||||
|
||||
// Count units
|
||||
static Unit get piece => Unit(
|
||||
'piece',
|
||||
UnitType.count,
|
||||
system: System.neutral,
|
||||
);
|
||||
|
||||
static Unit get dozen => Unit(
|
||||
'dozen',
|
||||
UnitType.count,
|
||||
system: System.neutral,
|
||||
);
|
||||
|
||||
// Informal units
|
||||
static Unit get pinch => Unit(
|
||||
'pinch',
|
||||
UnitType.count,
|
||||
system: System.neutral,
|
||||
);
|
||||
|
||||
static Unit get dash => Unit(
|
||||
'dash',
|
||||
UnitType.count,
|
||||
system: System.neutral,
|
||||
);
|
||||
|
||||
static Unit get drop => Unit(
|
||||
'drop',
|
||||
UnitType.fluid,
|
||||
system: System.neutral,
|
||||
);
|
||||
|
||||
static Unit get stick => Unit(
|
||||
'stick',
|
||||
UnitType.count,
|
||||
system: System.neutral,
|
||||
);
|
||||
|
||||
static Unit get can => Unit(
|
||||
'can',
|
||||
UnitType.count,
|
||||
system: System.neutral,
|
||||
);
|
||||
|
||||
static Unit get batch => Unit(
|
||||
'batch',
|
||||
UnitType.count,
|
||||
system: System.neutral,
|
||||
);
|
||||
|
||||
static Unit get handful => Unit(
|
||||
'handful',
|
||||
UnitType.count,
|
||||
system: System.neutral,
|
||||
);
|
||||
|
||||
/// returns english abbreviation if available, else empty String
|
||||
static String getUnitAbbreviation(BuildContext context, Unit unit) {
|
||||
final abbreviations = {
|
||||
'teaspoon': 'tsp',
|
||||
'tablespoon': 'tbsp',
|
||||
'fluid ounce': 'fl oz',
|
||||
'cup': 'c',
|
||||
'pint': 'pt',
|
||||
'quart': 'qt',
|
||||
'gallon': 'gal',
|
||||
'milliliter': 'ml',
|
||||
'liter': 'l',
|
||||
'ounce': 'oz',
|
||||
'pound': 'lb',
|
||||
'gram': 'g',
|
||||
'kilogram': 'kg',
|
||||
};
|
||||
return abbreviations[unit.name] ?? '';
|
||||
}
|
||||
}
|
||||
16
lib/models/ingredient.dart
Normal file
16
lib/models/ingredient.dart
Normal file
@@ -0,0 +1,16 @@
|
||||
import '../src/enums.dart' show IngredientType;
|
||||
import 'unit.dart';
|
||||
|
||||
class Ingredient {
|
||||
final String title;
|
||||
final List<Unit> possibleUnits;
|
||||
final List<String> preferredBrands;
|
||||
final IngredientType type;
|
||||
|
||||
Ingredient({
|
||||
required this.title,
|
||||
required this.type,
|
||||
this.possibleUnits = const [],
|
||||
this.preferredBrands = const [],
|
||||
});
|
||||
}
|
||||
11
lib/models/ingredient_list_entry.dart
Normal file
11
lib/models/ingredient_list_entry.dart
Normal file
@@ -0,0 +1,11 @@
|
||||
import 'ingredient.dart';
|
||||
import 'unit.dart';
|
||||
|
||||
class IngredientListEntry {
|
||||
final Ingredient ingredient;
|
||||
final int amount;
|
||||
final Unit unit;
|
||||
final bool optional;
|
||||
|
||||
IngredientListEntry(this.ingredient, this.amount, this.unit, this.optional);
|
||||
}
|
||||
31
lib/models/recipe.dart
Normal file
31
lib/models/recipe.dart
Normal file
@@ -0,0 +1,31 @@
|
||||
import '../src/enums.dart' show Difficulty, Cuisine, MealCategory;
|
||||
import 'ingredient_list_entry.dart';
|
||||
|
||||
class Recipe {
|
||||
final int id;
|
||||
final String title;
|
||||
final String description;
|
||||
final Difficulty difficulty;
|
||||
final List<IngredientListEntry> ingredients = [];
|
||||
final List<String> steps = [];
|
||||
final DateTime datePublished;
|
||||
final Duration prepTime;
|
||||
final Duration cookTime;
|
||||
final Duration totalTime;
|
||||
final List<String> keywords = [];
|
||||
final MealCategory mealCategory;
|
||||
final Cuisine cuisine;
|
||||
|
||||
Recipe({
|
||||
required this.id,
|
||||
required this.title,
|
||||
required this.description,
|
||||
required this.difficulty,
|
||||
required this.datePublished,
|
||||
required this.prepTime,
|
||||
required this.cookTime,
|
||||
required this.totalTime,
|
||||
required this.mealCategory,
|
||||
required this.cuisine,
|
||||
});
|
||||
}
|
||||
9
lib/models/unit.dart
Normal file
9
lib/models/unit.dart
Normal file
@@ -0,0 +1,9 @@
|
||||
import '../src/enums.dart' show UnitType, System;
|
||||
|
||||
class Unit {
|
||||
final String name;
|
||||
final UnitType type;
|
||||
final System system;
|
||||
|
||||
Unit(this.name, this.type, {this.system = System.metric});
|
||||
}
|
||||
128
lib/src/enums.dart
Normal file
128
lib/src/enums.dart
Normal file
@@ -0,0 +1,128 @@
|
||||
enum System { metric, imperial, neutral }
|
||||
|
||||
enum UnitType {
|
||||
fluid,
|
||||
weight,
|
||||
count,
|
||||
}
|
||||
|
||||
enum Difficulty {
|
||||
notSelected,
|
||||
veryEasy,
|
||||
easy,
|
||||
intermediate,
|
||||
hard,
|
||||
veryHard,
|
||||
}
|
||||
|
||||
enum IngredientType {
|
||||
vegetable,
|
||||
meat,
|
||||
fish,
|
||||
grain,
|
||||
fruit,
|
||||
dairy,
|
||||
fatsAndOil,
|
||||
spice,
|
||||
other,
|
||||
}
|
||||
|
||||
enum MealCategory {
|
||||
// Main Meals
|
||||
breakfast,
|
||||
brunch,
|
||||
lunch,
|
||||
dinner,
|
||||
supper,
|
||||
|
||||
// Other Categories
|
||||
dessert,
|
||||
snack,
|
||||
appetizer,
|
||||
sideDish,
|
||||
beverage
|
||||
}
|
||||
|
||||
enum Cuisine {
|
||||
// Asian Cuisines
|
||||
chinese,
|
||||
japanese,
|
||||
korean,
|
||||
vietnamese,
|
||||
thai,
|
||||
indian,
|
||||
indonesian,
|
||||
malaysian,
|
||||
filipino,
|
||||
singaporean,
|
||||
|
||||
// European Cuisines
|
||||
french,
|
||||
italian,
|
||||
spanish,
|
||||
greek,
|
||||
german,
|
||||
british,
|
||||
irish,
|
||||
polish,
|
||||
hungarian,
|
||||
swedish,
|
||||
norwegian,
|
||||
danish,
|
||||
portuguese,
|
||||
belgian,
|
||||
dutch,
|
||||
swiss,
|
||||
|
||||
// Middle Eastern Cuisines
|
||||
turkish,
|
||||
lebanese,
|
||||
persian,
|
||||
israeli,
|
||||
moroccan,
|
||||
egyptian,
|
||||
|
||||
// American Cuisines
|
||||
american,
|
||||
mexican,
|
||||
brazilian,
|
||||
argentinian,
|
||||
peruvian,
|
||||
caribbean,
|
||||
cajun,
|
||||
creole,
|
||||
texMex,
|
||||
canadian,
|
||||
|
||||
// African Cuisines
|
||||
ethiopian,
|
||||
nigerian,
|
||||
southAfrican,
|
||||
kenyan,
|
||||
tunisian,
|
||||
|
||||
// Pacific & Oceanian
|
||||
australian,
|
||||
newZealand,
|
||||
hawaiian,
|
||||
polynesian,
|
||||
|
||||
// Regional American
|
||||
southernUs,
|
||||
newEngland,
|
||||
midwestern,
|
||||
southwestern,
|
||||
california,
|
||||
|
||||
// Fusion
|
||||
asianFusion,
|
||||
latinFusion,
|
||||
mediterranean,
|
||||
panAsian,
|
||||
|
||||
// Other
|
||||
international,
|
||||
modern,
|
||||
fusion,
|
||||
streetFood
|
||||
}
|
||||
Reference in New Issue
Block a user