- Renamed project from "Food Allergy Scanner" (food_allergy_scanner) to "Can I Eat That" (can_i_eat_that)
- Put Version Information in a CHANGELOG.md
- README - Wrote section on : App Installation from GitHub
- Removed unused "Themes" Folder and "themes/app_theme.dart" (ThemeData is in main.dart)
- Image Deletion occurs on...
- Camera Screen: Image deleted on camera capturing error, image retake, or image cancellation.
- Crop Screen: Image deleted on cropping cancellation.
- Home Screen: Image deleted on results "Photo is unclear," "Product is safe to eat," "Product contains allergens," and "No text recognized."
- README - Added Privacy Policy (for image deletion + allergens stored to sharedPreferences)
- README - Added app screenshots
- CHANGELOG: Formatted file for easier readability
- Home Screen: Removed phrase "or less of" from ingredients in normalizeIngredients()
- Debugging - replaced print statement with loggers
- README: Add app demo / screenshots / gifs
- (IMPORTANT) Spacing between camera and camera button should be even (Small Phone)
- Home Screen - Fixed "Scan Result" dialog overflow issue when phone = landscape mode
- Camera Screen - fixed button formatting when phone = landscape mode
- AndroidManifest.xml - Locked phone in portrait mode
- Note: Added updates to landscape mode, then locked app in portrait mode, so that UI is responsive to different phone sizes in all/extreme cases.
- (IMPORTANT) Figure out how to run in release mode (update kotlin)
- Cohesive color palette across all screens using ThemeData in main.dart
- Centered all Screen Titles
- Home Screen
- Added image of person with magnifying glass
- Manage Allergies Screen
- Modified "add allergen" plus sign icons to have circle behind it
- Made both input fields uniform
- Added rectangle around both input fields
- Cursor (when typing in Text Field) is purple
- All appbar icons (back arrow, clear all trash) is same color (cream)
- Background color behind input fields is darker than that of allergen list
- Processing Dialog / Validation Loading Dialog
- Manually added theme colors for readability
- Camera Screen
- Turned camera button red & purple
- Created and imported app icon
- Disabled "Crop" button until crop_your_image widget loads in (in Crop Screen)
- Made Special Case where "and" is not removed in the phrase "Natural and Artificial"
- (Note: This addresses note in v0.9.13)
- HomeScreen Rework
- (2.a) Added method normalizeIngredients() - removed redundant ingredient normalization in scanProduct() and validateIngredients()
- (2.b) Updated scanProduct() matching logic to be less redundant
- (2.c) Added method findMatches() - Made matching logic in scanProduct() it's own method
- (2.d) Comments added + formatting
- Cleaned up unused dependencies in pubspec.yaml & unused methods in services/merriam_webster_service
- Comments added + formatting for:
- CropScreen
- ManageAllergiesScreen
- MatchingAllergensScreen
- Utils, Processing_Dialog
- ValidationLoadingDialog
- Main.dart
- CameraScreen
- ProcessingDialog & ValidationLoadingDialog - changed title messages to make more user friendly
- Removed back navigation on CropScreen/CameraScreen (replaced deprecated onWillPop with canPop)
- CropScreen - Added CircularLoadingIndicator during the pause that occurs after user hits "Continue"
- CropScreen - Modified buttons to match Camera UI
- HomeScreen - Modified ingredient normalization
- Set ingredients to lowercase for easier normalization
- Removed phrase "and/or" from ingredients list (along with "and" and "or")
- CameraScreen - Fixed glitchy bottom message + padding
- Solved Issue: Bottom message kept switching from left-align to center-align
- Solved Issue: Static padding values made camera preview offcentered
- Removal of "And", "Or", "And/Or"
- Splits phrase like "Wheat and Oat" into two ingredients: "Wheat", "Oat"
- Issue: Splits "Natural and Artifical Flavouring" into "Natural", "Artifical Flavouring"
- Disabled Continue button (in Crop Screen) once pressed (because multiple presses leads to error)
- Upgraded Camera UI - Added Capture / Retake / Cancel / Approve buttons
- Buggy API Calls - Added batch processing (to validateIngredients() in HomeScreen)
- Previous Implementation: Made API Calls for all words concurrently
- Issue: Lag, 504 Errors
- New Implementation: Batch of 5 words, Smoother/Faster performance
- Previous Implementation: Made API Calls for all words concurrently
- Upgraded Flutter ("flutter upgrade"), including dependencies
- Camera - Updated Camera UI to look like Image Cropper UI
- Note: Padding issues
- Permissions Bug - App no longer asks for audio access
- Permission Denial - App checks if camera permissions is denied
- If denied, two options shown: "Settings" and "Ok"
- "Ok": Leads to HomeScreen
- "Settings": Leads to Settings app where user can change permissions
- Made cropping handles further away from edge of screen (to avoid accidental swiping backwards gesture)
- Removed duplicate ingredients from ingredients list
- Improved image cropper
- Replaced image_cropper package with crop_your_image package
- Created crop_image_screen.dart
- Included instruction message @ bottom of the screen
- Added utils.dart + integrated into screens files
- Added const modifiers
- Added CircularProgressIndicator on HomeScreen
- Displays behind all UI elements (camera, image cropper, processingDialog widget, validationLoadingDialog widget)
- Reverts back to regular HomeScreen when
- (1) User cancels camera / cropper
- (2) Scan Results AlertDialog
- Formatted all lib files
- Consolidated redundant methods in allergy_provider + integrated updates into manageAllergies
- User enters mispelled allergen + same mispelled allergen is scanned --> Allergen goes under both "Unsafe" and "Unrecognized" in Results page
- More thorough normalization of ingredients list
- extracted words list from ingredients list, rather than both being extracted seperately from the scanned text
- above is useful for removed words (i.e "ingredients" or "and / or")
- Used same [ingredient / word extraction from scanned text] logic for validateIngredients() and scanProduct()
- Better formatting + comments
- Removed Keywords (from ingredients list)
- Already Implemented: "Ingredient", "Ingredients"
- Added: "Contains", "Or Less Of", "May contain"
- Ingredient Splitters - Added more (splitters are removed from ingred. list)
- Colons
- "And"
- "Or"
- Image cropping feature after user captures photo
- (so that they only capture the text they wish)
- User is sent to home screen if they cancel image cropping feature
- Fixed - invalid ingredients aren't part of the safe ingredient list anymore
- Removed the words "ingredient(s)" from printing on the Results page as an ingredient itself
- "See Details" now shows even if there are no matching allergens
- Fixed - user cancels image picker, screen turns black
- Safe ingredient is shown in Matching Allergens Screen
- Newline characters replaced w/ single space in ingredients list
- Whole invalid ingredient is shown in Matching Allergens Screen (not just invalid word)
- Invalid words (aka. scanned ingredients not found in dictionary) show in Matching Allergens Screen
- (note: ) occurs when warning that between 90 and 100 words were shown
- '&' does not count as punctuation in removeWordPunctuation, is permissible (in the case of words like fd&c)
- Renamed widget files better (LoadingDialog to ValidationLoadingDialog)
- Removed duplicate ValidationLoadingDialog in home_screen and instead imported widgets/validation_loading_dialog
- Another loading spinner (processing_dialog_widget.dart) signifying ingredients being scanned (before validation loading_dialog_widget.dart)
- Changed counter to show # of words being validated, NOT number of valid words
- (note) : loading bar works properly
- Made pre-validation for special words (abbreviations: vit, fd&c)
- (a) REMOVED: Replaced "Vit" abbreviation with "Vitamin"
- If 90%+ (excluding 100%) words were validated, a warning message is shown that not all words were recognized.
- Put back Snackbar error - enter allergen before scanning product
- HomeScreen --> progress bar shows correct amount of words to be validated
- Replaced "Vit" abbreviation with "Vitamin"
- (note) DID NOT IMPLEMENT [Match allergens against validated words list, not ingredients list] because "White Wine Vinegar" is "White", "Wine", "Vinegar"
- Progress bar that loads while ingredients are being scanned
- Used concurrency for faster ingredient-dictionary validation
- Duplicate group allergen snackbar error - accidentally removed earlier, now put back
- Made README more readable
- Made ingredient validation logic simpler (performance is faster now)
- Use both Webster's medical / collegiate dictionary for word validation (medical handles words like "degermed")
- Put API Key in enviroment variables file (.env)
- Made .env_sample to show how to import API keys
- Added "USAGE / Enviroment Configuration" section to README
- Crossreference each scanned ingredient with Merriam Webster Dictionary API
- (a) If >= 90% of words are validated, ingredient-allergen matching logic ensues
- (b) If <90% of words are valid, "photo is unclear" message is shown
- (c) (BACKEND)
- (c.i) If word is invalid, closest suggestions are listed
- (c.ii) Finds best suggestion using string_similarity package
- Allergens are formatted to Title Case on MatchingAllergensScreen
- Red Warning Icon next to matching allergen in MatchingAllergensScreen
- (a) (Note) Debugging - put back printed ingredients (accidentally removed in earlier version)
- Duplicate Plurals - user cannot enter either singular / plural version of same allergen
- Formatting - allergen is formatted to Title Case regardless of how user capitalized
- (note: lowercase still used for comparison)
- Solve issue of no matching because of plurals
- (a) (i.e user enters "Almonds" but ingredients say "Almond")
- (b) (i.e user enters "Anchovy" but ingredients say "Anchovies")
- (c) (i.e user enters "Molasses" which is already in singular / plural form)
- Fixed - App wouldn't render allergens from a food group that user entered seperately through TextField
- (Ex) User entered Anchovies in TextField (included in Fish Food Group), but wouldn't show on screen
- Updated Max Allergies to 30 allergens
- Fixed - User was able to add more than 30 allergies if (current allergies) was < 30 and (wanted allergies + current allergies ) > 30
- Added "Crustacean Shellfish", "Legumes", and "Fish" to food group allergy in Dropdown with "Tree Nuts"
- Removed "Tree Nuts" feature from TextField and turned it into DropDown feature for easier UI.
- Included "Treenuts" option encompassing all nuts
- Made "treenuts" and "tree nuts" both recognizable as Tree Nuts
- Made allergens list saveable using SharedPreferences
- Prevent empty allergens list before scanning product
- If no text is recognized when scanning, alert user
- Implement "Clear All" button in ManageAllergies
- If product is unsafe to eat, "See Details" option shows list of offending ingredients on another page (matching_allergen_screen)
- Fixed issue with user being able to enter whitespace as allergen.
- Added maximum of 20 allergens
- Made Manage / Matching Allergen pages Scrollable
- Duplicate allergen entries not allowed in ManageAllergies.
- (a) (Ex) YouTube, Youtube, youtube, YOUTUBE, are the same
- (b) (Ex) You Tube, you tube, You tube, and YOU TUBE are the same
- Fixed issue with determining matches between ingredients & allergies
- (Ex) Allergen: YouTube
- NOT MATCH: Tube, You
- MATCH: YouTube, Youtube, youtube, YOUTUBE
- (Ex) Allergen: YouTube