## Why?
- in the future we could enable the developer options in dev builds only. This would result in better performance and smaller downloadsize.
- Ability to disable catcher. Catcher limits the ability of debuging as it catches everything thrown. Also catcher won't even display the crash when the system is in dark mode (white text on white background. Probably a bug on theier side)
## How to use this?
just add a `--dart-define` followed by your config after the flutter command. Further info can be found in [Readme.md](/Readme.md)
- migrate the `open source license page`to `showLicensePage()`
- deactivate unused buildrunner
## Why?
this method is flutter internal. This means less code to maintain and less issues to make (see the one this fixes).
## What changes?
- a bit of UI (the new page will have a master detail view on large screens helping accessibility)
- we don't need to pre generate the licenses manually
info: Conditions should not unconditionally evaluate to `true` or
to `false`. verify: pieceToRemoveCount <= 0.
(invariant_booleans at [sanmill] lib/mill/position.dart:675)
- removed `shared/common/`
- implemented new data models for the settings
- implemented a new `LocalDatabaseService`
Why:
The new code will allow use to better utilize flutter's ractivenes. `HiveDB` (our new database backend) will give us `ValueListenable`, `Streams` and real time storage access. The sriliazation for the models is generated by `build_runner` and even the old seriliazation for the storage migration is generated (json_serializable).
TODO:
- implement reactivenes. We currently don't utilize this functionality to it's full potential (`Consumer`) :)
- implement migration. The migration service for the old database service isn't there yet.
Effectively rewriting the entire audio stack
- propperly await futures
- only play sound once on take play back
Further testing is needed but as we await the autio play we should be able to remove the stopPlay now.
fix late init problem
* Enabled strict linting.
* Fix all the linting errors and disabled the rules that needed to much
restructure.
* Restructured the files.
Known Issues:
* Tap drawer menu item will get an exception when AI is thinking
Change difficulty level to 30, thinking time to 60, select AI Vs. AI and
tap Start Game, and tap on the settings in the drawer menu get the
exception:
This widget has been unmounted, so the State no longer has a context
(and should be considered defunct).
* Sound problem
when this option is enabled, it does not take effect:
Preferences -> Sound effects -> Keep mute when taking back
The sound issue is related to some async not being
appropriately handled. This leads to the game_page setting Audios.
isTemporaryMute to false before Audios evaluated the value.
This leads to the sound being played. Some out-of-order execution.
It seems to be a thing with the code in general that Futures aren't
really awaited. This will be quite some stuff to do and check later.
* Performance
Performance testing has not yet been conducted.
- move list_item_divider into lib/shared
- move lib/engine into lib/services/engine
unify Import style
- I've unified the way files are imported. We now use absolute imports everywhere.
This is not a must but I find it more usefull.
cleanup imports
- prefer using part files where needed