40 Commits

Author SHA1 Message Date
000c2bed99 fix: Scanner buttons not updated (#1140)
* fix: Scanner buttons not updated

* Refactor: Own file for ScanHeader
2022-02-18 17:21:39 +01:00
7783e412e2 feat: Added core usage logging (#1147)
* feat: Initial tracking structure

* Added testing page

* Created track constructor

* Deleted unneccassary _trackConstructor params

* Finished start track

* Fix id + country

* Finished: trackScannedProduct

* Finished: trackProductPageOpen

* Finished: trackKnowledgePanelOpen

* Finished: trackOpenLink

* Finished: trackPersonalizedRanking

* Finished: trackSearch

* Added documentation + fixed imports

* Code review

* trackKnowledgePanelOpen

* Code review

* Update main.dart
2022-02-18 17:01:14 +01:00
a1e8221edc feat: Add retry button in case of Internet Error (#1105)
* feat: add string for retry button

* feat: add method to reload barcode information on internet error

* feat: update localizations and add retry button

* chore: make setBarcodeState private
2022-02-11 23:48:10 +01:00
a4f623aeb9 fix: #1048 - added the scanned product to history (#1049)
Impacted file:
* `continuous_scan_model.dart`: added the scanned product to history
2022-01-31 16:43:12 +01:00
4a85c62af4 feat: ML Kit scanner (#893)
* feat: Working ML-Kit scanner without adding to ContinuousScanModel

* feat: Fully working ml kit scanner

* Cleanup

* Cleanup + documenting

* Update ml_kit_scan_page.dart

* More abstraction

* Stackoverflow link

* Update ml_kit_scan_page.dart

Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
2022-01-12 18:54:50 +01:00
2262b4e3be feature/#782 - now using the onboarding's country and global country and language for API searches (#783)
Impacted files:
* `barcode_product_query.dart`: now using global country and language
* `continuous_scan_model.dart`: now using implicitly global country and language
* `country_selector.dart`: fixed the initial country search (lowercase); now setting global country
* `image_upload_card.dart`: now using global language
* `keywords_product_query.dart`: now using global country and language
* `knowledge_panels_query.dart`: now using global country and language
* `main.dart`: now setting global country and language at init time
* `new_product_page.dart`: now using implicitly global country and language
* `product_dialog_helper.dart`: now using implicitly global country and language
* `product_query.dart`: added getter and setter for global country and language
* `smooth_app/pubspec.yaml`: upgraded to 1.8.1 off-dart, therefore we can remove the `dependency_overrides` fix
* `smooth_app/pubspec.lock`: impacted by `pubspec.yaml`
* `smooth_ui_library/pubspec.yaml`: upgraded to 1.8.1 off-dart
* `smooth_ui_library/pubspec.lock`: impacted by `pubspec.yaml`
* `example/pubspec.yaml`: unrelated minor upgrades
* `example/pubspec.lock`: impacted by `pubspec.yaml`
* `scan_page.dart`: now using implicitly global country and language
* `search_page.dart`: now using implicitly global country and language
* `user_preferences.dart`: minor refactoring
2021-12-29 11:06:50 +01:00
572b441813 feat: Use visibility_detector to detect if camera is open (#730)
* feat: Use visibility_detector to detect if camera is open

* Update tab_navigator.dart

* Update pubspec.lock

* Update continuous_scan_page.dart
2021-12-15 19:36:45 +01:00
368758d0b1 refactor: removal of the old version of ProductPage; OFF language and country (#729)
Deleted files:
* `attribute_card.dart`
* `attribute_list_expandable.dart`
* `category_card.dart`
* `category_chip.dart`
* `category_product_query.dart`
* `choose_page.dart`
* `group_product_query.dart`
* `product_page.dart`
* `smooth_expandable_card.dart`
* `subcategory_card.dart`
* `text_search_widget.dart`

Impacted files:
* `barcode_product_query.dart`: now using OFF classes for language and country instead of `String`s
* `continuous_scan_model.dart`: now using OFF classes for language and country instead of `String`s
* `keywords_product_query.dart`: now using OFF classes for language and country instead of `String`s
* `knowlegde_panel_query.dart`: now using OFF classes for country instead of `String`
* `product_cards_helper.dart`: moved here method from now defunct `AttributeListExpandable`
* `product_dialog_helper.dart`: now using OFF classes for language and country instead of `String`s
* `product_query.dart`: now computing values for OFF classes for language and country instead of `String`s
* `pubspec.yaml`: removed now useless libraries `flutter_staggered_animations`, `flutter_staggered_grid_view`, `flutter_typeahead` and `share_plus`, and upgraded some version numbers
* `scan_page.dart`: now using OFF classes for language and country instead of `String`s
* `search_page.dart`: moved methods from now defunct `ChoosePage`
* `smooth_product_card_found.dart`: removed an never used "old style" version; use a method moved to `product_dialog_helper.dart`
* `smooth_ui_library.dart`: removed the entry about now defunct `smooth_expandable_card.dart`
* `summary_card.dart`: use a method moved to `product_dialog_helper.dart`
2021-12-15 15:53:41 +01:00
c2d3b85a3b fix: Wrong null check in scanner (#724) 2021-12-13 18:19:46 +01:00
ca3739ec71 feat: #681 Stateful tabs (#703)
* feat: first working stateful tab

* feat: enum instead of String

* Update tab_navigator.dart

* feat: Working camera disable for other tabs

* fix: #640 stop camera when navigating further in the stack

* doc + null safety

* fix: activating scanner when rebuilding from ground up

* Updated goldens

The navbar got removed from the images because it is now not directly added by the pages anymore

* doc:

* Minor changes

* fix: Updating product with multiple navigators

* Minor fixes

* Simplification

* Simplification

* Simplification

* Update main.dart

* Update product_list_page.dart

Co-authored-by: monsieurtanuki <fabrice_fontaine@hotmail.com>
2021-12-11 12:54:01 +01:00
5c7d1485de feat: #470 - hive instead of sqflite, and no more pantries and colors (#717)
Deleted files:
* `bulk_deletable.dart`
* `bulk_insertable.dart`
* `bulk_manager.dart`
* `dao_product_extra.dart`
* `label_sneek_peak_view.dart`
* `list_page.dart`
* `multi_product_select_page.dart`
* `product_copy_helper.dart`
* `product_copy_view.dart`
* `product_extra.dart`
* `product_list_add_button.dart`
* `product_list_button.dart`
* `product_list_item.dart`
* `product_list_item_pantry.dart`
* `product_list_item_shopping.dart`
* `product_list_preview.dart`
* `product_list_preview_helper.dart`

Impacted files:
* `abstract_dao.dart`: added hive related init methods
* `barcode_product_query.dart`: minor refactoring
* `category_product_query.dart`: minor refactoring
* `continuous_scan_model.dart`: minor refactoring
* `dao_product.dart`: rewritten from scratch with hive instead of sqflite - much easier to understand!
* `dao_product_list.dart`: rewritten from scratch with hive instead of sqflite - much easier to understand!
* `dao_string_list.dart` (renamed from `search_history.dart`): rewritten from scratch with hive instead of sqflite
* `database_product_list_supplier.dart`: minor refactoring
* `group_product_query.dart`: minor refactoring
* `history_page.dart`: minor refactoring
* `keywords_product_query.dart`: minor refactoring
* `local_database.dart`: rewritten from scratch with hive instead of sqflite; simplified
* `main.dart`: minor refactoring
* `new_product_page.dart`: minor refactoring
* `personalized_ranking_page.dart`: removed old feature
* `product_list.dart`: preferred `enum` to `String` for types; removed tons of old features
* `product_list_dialog_helper.dart`: removed old feature
* `product_list_item_simple.dart`: removed old features
* `product_list_page.dart`: removed old features
* `product_page.dart`: removed old feature
* `product_query_page_helper.dart`: cleaner code with `enum`s
* `pubspec.yaml`: added hive, removed sqflite
* `query_product_list_supplier.dart`: minor refactoring
* `search_history_view.dart`: minor refactoring
* `search_page.dart`: minor refactoring
2021-12-10 15:58:25 +01:00
61576ded71 fix: deprecated share package + analyzer warnings (#656) 2021-11-15 15:49:58 +01:00
d5cdba0336 Update scan page as per the UX spec (well, roughly) (#659) 2021-11-15 14:44:51 +01:00
e33a46e6c4 bug/#628 - notion of "FetchedProduct" for better control over internet errors (#630)
New files:
* `fetched_product.dart`: combo of Product and its fetch status
* `smooth_product_card_error.dart`: Product Card when an exception is caught

Impacted files:
* `app_en.arb`: added translations for "internet error" and "canceled by user"
* `barcode_product_query.dart`: now using `FetchedProduct` instead of `Product`
* `choose_page.dart`: now using `FetchedProduct` instead of `Product`
* `continuous_scan_model.dart`: new value `ScannedProductState.ERROR`, used when an exception is caught during API call; now using `FetchedProduct` instead of `Product`
* `new_product_page.dart`: now using `FetchedProduct` instead of `Product`
* `product_dialog_helper.dart`: now using `FetchedProduct` instead of `Product`
* `product_page.dart`: now using `FetchedProduct` instead of `Product`
* `smooth_product_card_error.dart`: added an explicit message
* `smooth_product_carousel.dart`: handling the `ScannedProductState.ERROR` case
2021-10-26 09:21:34 +02:00
2ce940b319 feature_4/#461 - added the long click and the swipe features to ranking page (#471)
Also removed further "contribution" code.

Deleted files:
* `contribution_page.dart`: removed "contribution" code
* `smooth_product_card_edit.dart`: removed "contribution" code

Impacted files:
* `continuous_scan_model.dart`: refactored the "refresh"; removed "contribution" code
* `continuous_scan_page.dart`: refreshes the model after going to "ranking" page, where items can now be removed
* `home_page.dart`: removed "contribution" code
* `personalized_ranking_page.dart`: added the long click and the swipe features
* `product_list_page.dart`: refreshes after going to "ranking" page, where items can now be removed
* `scan_page.dart`: removed "contribution" code
* `smooth_product_carousel.dart`: refactored for a tricky moment where the length is not updated but deleted items are still potentially displayed; removed "contribution" code
2021-08-03 11:47:48 +02:00
df197818f3 feature_3/#461 - added a clearable scan feature (#469)
* feature_3/#461 - added a clearable scan feature

Deleted file:
* `smoothie.svg`: replaced by identical `Icons.emoji_events_outlined`

Impacted files:
* `category_card.dart`: unrelated replacement of 'smoothie.svg'
* `continuous_scan_model.dart`: added method `clearScanSession`; refactored
* `continuous_scan_page.dart`: replaced FAB with buttons "clear" and "ranking"; added a message when empty
* `dao_product_extra.dart`: handles the new "scan session" list; added method `clearScanSession`
* `dao_product_list.dart`: refactored
* `home_page.dart`: refactored
* `product_list.dart`: introduced the new "scan session" list type and renamed the previous "scan history" list type; refactored
* `product_list_page.dart`: handles the new "scan session" list; replacement of 'smoothie.svg'
* `product_query_page.dart`: replacement of 'smoothie.svg'
* `product_query_page_helper.dart`: handles the new "scan session" list
* `scan_page.dart`: removed the "Choose/Contribute" toggle button
* `smooth_view_finder.dart`: removed label "Powered by Open Food Facts"

* Update packages/smooth_app/lib/pages/scan/continuous_scan_page.dart

Co-authored-by: Stéphane Gigandet <stephane@openfoodfacts.org>

Co-authored-by: Stéphane Gigandet <stephane@openfoodfacts.org>
2021-07-28 18:42:18 +02:00
48fcc21bc0 feature_2/#461 - fixed product order for scanned products in dedicated page (#468)
Impacted files:
* `continuous_scan_model.dart`: reversing the order (= no change in display)
* `dao_product_extra.dart`: reversing the order of scanned products - the order is now from newer to older
2021-07-27 19:46:44 +02:00
65386e9155 Merge Changes 2021-07-23 09:59:05 -07:00
b582626ad7 Centralize the lints at the top level, instead of in each package 2021-07-22 15:35:34 -07:00
c119b70854 Update lint rules 2021-07-22 13:12:26 -07:00
194da755ef Null safety on data_models and database folders
As a side effect I've also removed 4 stale files that were kept "just in case".
2021-06-28 12:49:21 +02:00
c9ee397eb1 feature/#349 - refactoring the db + storing the product refresh timestamps
Impacted file:
* `continuous_scan_model.dart`: minor private variable renaming
2021-06-17 18:41:56 +02:00
30b549ebdc feature/#349 - refactoring the db + storing the product refresh timestamps
New files:
* `abstract_dao.dart`: DAO abstraction
* `dao_product_extra.dart`: DAO for Product Extra data

Impacted files:
* `barcode_product_query.dart`: automatically storing the product in the database
* `continuous_scan_model.dart`: refactored
* `dao_product.dart`: now extends new class `AbstractDao`; moved code to new class `DaoProductExtra`; refactored; optimized bulk actions
* `dao_product_list.dart`: now extends new class `AbstractDao`; now using new class `DaoProductExtra`; removed a SQLite foreign key for performance reasons; not storing products anymore (it's done somewhere else)
* `database_product_list_supplier.dart`: refactored because of `ProductListSupplier`
* `local_database.dart`: new database version; added `DaoProductExtra`
* `main.dart`: more verbose database crash message
* `product_dialog_helper.dart`: minor refactoring
* `product_list_supplier.dart`: refactored
* `product_page.dart`: now we display the access, the scan and the refresh timestamps in the lousy temporary button
* `product_query_model.dart`: removed the code regarding storing products in the database as it's now done in the `QueryProductListSupplier`
* `product_query_page.dart`: minor refactoring
* `product_query_page_helper.dart`: refactored because of `ProductListSupplier`
* `query_product_list_supplier.dart`: automatically storing the products in the database; refactored because of `ProductListSupplier`
2021-06-17 15:23:16 +02:00
abc4fab9ec feature/#349 - history and scan lists now have displayed timestamps
History and Scan lists now behave differently from the other lists.
They use "extra data": a product is in the History (or the Scan) list
if it has as an "extra data" the "last seen timestamp" (or the last scan timestamp).

Bad news: as it's a new concept in the app, we'll start from scratch for both lists.

Impacted files:
* `continuous_scan_model.dart`: new way of adding a product to scanned products; refactoring
* `continuous_scan_page.dart`: unrelated color fix
* `dao_product.dart`: added "last seen" and "last scan" as extra data, with a direct access to products that have those extra data
* `dao_product_list.dart`: history and scan lists are now handled as "different" lists, computed from the "last seen" and "last scan" extra data; refactored
* `product_list.dart`: added extra `int` data; cleaner "same product list" test
* `product_list_dialog_helper.dart`: cleaner "same product list" test
* `product_list_page.dart`: added dates to the display
* `product_page.dart`: simplified history management
* `smooth_product_card_found.dart`: added an optional `refresh` parameter, after visiting the product page
2021-06-04 18:09:35 +02:00
6f1e505fcf add await for _daoProductList.put 2021-03-27 18:09:50 +01:00
b5bcd0ec18 changes from code review 2021-03-27 17:03:51 +01:00
fdfa0ffd8d convert to single quote strings 2021-03-26 12:09:36 +01:00
9968ed5f49 trying to refresh scanned products #178, does not work yet 2021-03-17 18:33:22 +01:00
4e991bfe26 Version 2.0.0 fixes (#224) 2021-03-04 15:38:17 +01:00
76a668ead8 feature/#178 - refresh button on bottom bar of product page
New file:
* `product_dialog_helper.dart`: Dialog helper for product barcode search

Impacted files:
* `barcode_product_query.dart`: unrelated refactoring of the use of language and country codes
* `choose_page.dart`: moved the "barcode search dialog" to new class `ProductDialogHelper`
* `continuous_scan_model.dart`: unrelated refactoring of the use of language and country codes
* `keywords_product_query.dart`: unrelated minor refactoring
* `product_page.dart`: added a "refresh product" button on the bottom bar
* `product_query.dart`: : unrelated adding of methods for the language and country codes; added translated fields
* `scan_page.dart`: unrelated refactoring of the use of language and country codes
2021-02-16 13:19:42 +01:00
0fa9d159a2 Fastlane automatic release for Android (#96)
* Update .gitignore

* Fastlane Android

* Changed to decrypt individual files

* Update android-release.yml

* Fix for "Could not find method signingConfigs()"

* Update android-release.yml

* Update android-release.yml

* Possible "./decrypt_secrets.sh: Permission denied" fix

* Update android-release.yml

* Update android-release.yml

* Update decrypt_secrets.sh

* Update keystore.jks.gpg

* Directory fix

* No format exit

* Directory + Analyzer

* No tests

* Update build.gradle

* Update android-release.yml

* Updated decrypt_secrets.sh path for CF

* Fastlane subdirectory change

* Updated f astlane-action version

* Updated flutter-action version

* Version fix

* Update android-release.yml

* Update Gemfile

* Update android-release.yml

* Update android-release.yml

* No specified ruby version in Gemfile

* Update android-release.yml

* Older variants

* No package/smooth_app for fastlane subdirectory

* Update Fastfile

* Update android-release.yml

* Update Fastfile

* Update Fastfile

* Update Fastfile

* Update android-release.yml

* Update Fastfile

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* Changed to appbundle

Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>

* Switched channel

Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>

* Update android-release.yml

* Update android-release.yml

* Ruby change + no Checkout

* Update android-release.yml

* Update android-release.yml

* Update Fastfile

* Update android-release.yml

* Update android-release.yml

* Update keystore.jks.gpg

* Update android-release.yml

* Update build.gradle

* Update build.gradle

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* Update build.gradle

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* Apply suggestions from code review

* Update build.gradle

* Update build.gradle

* Update android-release.yml

* Update build.gradle

* Update build.gradle

* Added empty key.properties

* Update android-release.yml

* Direct read form env

* Updated path

* Update android-release.yml

* Update build.gradle

* Changed order

* Order

* Fixed env Var naming

* Changed gradle version

* Changed Gradle version

* No working-directory needed

* Updated scanner package + gradle version

* Updated minSdkVersion

* Updated fastlane path

* Update Fastfile

* Updated version code

* Updated version code

* Update pubspec.yaml

* Update pubspec.yaml

* pubspec location

* Update android-release.yml

* Update android-release.yml

* Update pubspec.yaml

* Bumped gradle version

https://stackoverflow.com/a/64533389/13313941

* Updated for ci fix

* Update ci.yml

* Change upload directory

* Moved fastlane folder to root

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* Update Fastfile

* Update Fastfile

* Changed directory back

* Update android-release.yml

* Update android-release.yml

* Update versioncode test1

* Update Gemfile

* Update Gemfile

* Update Fastfile

* Update Fastfile

* Update Fastfile

* Update Fastfile

* Update Fastfile

* Update Fastfile

* Update Fastfile

* Update Fastfile

* Outsourcing pumping

* Update android-release.yml

* Changed bump method

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* Update ci.yml

* Only one CI

* Update ci.yml

* CI

* Update ci.yml

* Update ci.yml

* Update ci.yml

* Update ci.yml

* Update build.gradle

* lo

* Removed cast

* VErison bump upload

* Update android-release.yml

* Bumped Version

* Adapted to branch naming scheme

* Cleanup

* Added cider fork

* Updated workflow for testing

* Fix syntax

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* Update android-release.yml

* cleanup

* added log

* Update version_command.dart

* Update version_command.dart

* Update version_command.dart

* Update version_command.dart

* Update version_command.dart

* Update version_command.dart

* Update android-release.yml

* Bumped Version

* lll

* Bumped Version

* Deleted local package

* String manipulation in terminal

* Update android-release.yml

* Update android-release.yml

* Bumped Version

* Test

* Update android-release.yml

* Update android-release.yml

* Bumped Version

* Updated release for release

* Update packages/smooth_app/android/gradle/wrapper/gradle-wrapper.properties

Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>

Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
Co-authored-by: Version Bump <>
2021-02-03 16:18:25 +01:00
69c3dbf960 feature/#21 - scan now uses local database, for product look up and for its history
New file:
* `scan_page.dart`: helper class to be used on top of `AlternativeContinuousScanPage` and `ContinuousScanPage`

Impacted files:
* `alternative_continuous_scan_page.dart`: `ContinuousScanModel` is now initialized upstream by `ScanPage`
* `continuous_scan_model.dart`: now a `ChangeNotifier`, uses a `ProductList` and database cache
* `continuous_scan_page.dart`: `ContinuousScanModel` is now initialized upstream by `ScanPage`
* `contribution_page.dart`: uses the new `ScanPage` widget instead of the 2 scan pages
* `local_database.dart`: removed the dummy notify listener method
* `main.dart`: uses the new `ScanPage` widget instead of the 2 scan pages
* `personalized_ranking_page.dart`: now we use a `ProductList` as input
* `product_list.dart`: added a `getProduct` method and a "scan list" identifier
* `product_page.dart`: unrelated UI fixes
* `product_query_page.dart`: slight refactoring
* `smooth_it_model.dart`: now we use `ProductList`
* `smooth_product_carousel.dart`: added the new "CACHED" product possibility; fixed an init bug
2021-01-16 12:31:04 +01:00
43fda6eed7 feature/#21 - automatically storing keywords and group results into the database
... and automagically asking the end-user if they want to see the cache

New files:
* `dao_product.dart`
* `dao_product_list.dart`
* `database_product_list_supplier.dart`
* `product_list.dart`
* `product_list_supplier.dart`
* `product_query_page_helper.dart`
* `query_product_list_supplier.dart`

Impacted files:
* `choose_page.dart`: now uses `ProductQueryPageHelper` in order to get database or http results; refactored
* `continuous_scan_model.dart`: minor refactoring due to DAO
* `group_product_query.dart`: now implements new method `getProductList`
* `keywords_product_query.dart`: now implements new method `getProductList`
* `local_database.dart`: now it's version 2; refactored using the new DAO classes
* `product_query.dart`: new method `getProductList`
* `product_query_model.dart`: now we use a `ProductListSupplier` instead of a `ProductQuery`
* `product_query_page.dart`: now we use a `ProductListSupplier` instead of a `ProductQuery`
2021-01-10 16:43:50 +01:00
c5f5b93b6f feature/#55 - experimenting the NotifyListeners method in a clean model without Widgets
Impacted files:
* `alternative_continuous_scan_page.dart`: refactoring mainly due to changes in `ContinuousScanModel`
* `continuous_scan_model.dart`: now we don't deal with `Widget`s, only metadata, and we use a NotifyListeners method
* `continuous_scan_page.dart`: refactoring mainly due to changes in `ContinuousScanModel`
* `contribution_page.dart`: unrelated refactoring about the use of `UserPreferences`
* `local_database.dart`: added a temporary "dummy"`NotifyListeners` method, for the sake of demonstration - to be removed
* `smooth_product_carousel.dart`: now we build the `Widget`s from metadata, and we control here the carousel
2021-01-02 14:25:16 +01:00
2dbb6b62ac feature/#55 - SQLite local database, and refactoring with StatefulWidget's
New files:
* `barcode_product_query.dart`: API query / product by barcode (used to be in `full_products_database.dart`)
* `local_database.dart`: local SQLite database with one table (`product`)

Deleted files:
* `choose_page_model.dart`: moved the code to `StatefulWidget` `ChoosePage`
* `full_product_database.dart`: database code was deprecated; API fields is now in `ProductQuery`

Impacted files:
* `alternative_continuous_scan_page.dart`: now a `StatefulWidget`; refactored with `ContinuousScanPage`
* `build.gradle`: unrelated - lowered the Android `minSdkVersion` from `24` to `19`, in order to run the app on my old smartphone ;)
* `choose_page.dart`: refactoring as changed to `StatefulWidget`
* `continuous_scan_model.dart`: not a `ChangeNotifier` anymore - should be improved when we use product list
* `continuous_scan_page.dart`: now a `StatefulWidget`
* `group_product_query.dart`: minor refactoring due to the changes in `product_query.dart`
* `keywords_product_query.dart`: minor refactoring due to the changes in `product_query.dart`
* `main.dart`: added `LocalDatabase` to the providers; simplified the code; removed mentions to `SharedPreferences`
* `product_query.dart`: refactored a bit; moved here some fields from `full_product_database.dart`
* `product_query_model.dart`: now using `LocalDatabase`
* `product_query_page.dart`: now using `LocalDatabase`; refactoring
* `pubspec.yaml`: replaced `sembast with `sqflite`
2021-01-01 21:11:15 +01:00
3e4d7a0fbb feature/#32 - display only the preferences important attribute's svg of a product, and in the correct order
New file:
* `attribute_card.dart`: displays the svg of the score of the product for the variable

Deleted file:
* `smooth_product_card_template.dart`: replaced implicitly with `Widget`

Impacted files:
* `continuous_scan_model.dart`: refactoring around the now deleted "template"
* `smooth_product_card_edit.dart`: refactoring around the now deleted "template"
* `smooth_product_card_found.dart`: display only the preferences important attribute's svg of a product, and in the correct order
* `smooth_product_card_loading.dart`: refactoring around the now deleted "template"
* `smooth_product_card_not_found.dart`: refactoring around the now deleted "template"
* `smooth_product_card_thanks.dart`: refactoring around the now deleted "template"
* `smooth_product_carousel.dart`: refactoring around the now deleted "template"
* `user_preferences_model.dart`: new `getOrderedVariables` method
2020-12-28 14:45:50 +01:00
35b62cc5a3 Added Sentry 2020-08-04 15:54:16 +02:00
2a9639f91d New product page 2020-07-13 12:30:35 +02:00
2917c332df Choose Page, now using openfoodfacts-dart from pub.dev 2020-06-30 11:20:20 +02:00
0527a1e48e Personalized Filtering & Ranking 2020-06-16 10:39:56 +02:00