Lightmeter app inspired by Material 3 design system.
Find a file
Vadim c66381f813
ML-191 Add an ability to add a generic film, that will accept a formula (#195)
* sync with resources

* separated `ExpandableSectionList` as widget

* fixed generic type

* implemented `FilmsScreen` (wip)

* made `SliverScreen` title a widget

* [`FilmEditScreen`] wip

* [`FilmEditScreen`] added validation

* fixed title overflow for `SliverScreen`

* [`FilmEditScreen`] separated add and edit blocs

* [`FilmEditScreen`] split into separate components

* added bottom widget to `SliverScreen`

* implemented films list tabs fo `FilmsScreen`

* added films screen to navigation

* replaced explicit routes names with enum values

* implemented CRUD for custom films

* added placeholder for empty custom films list

* added `FilmsStorageService`

* fixed unit tests

* fixed integration tests

* lint

* fixed golden tests

* added iap stub methods

* added custom films to features list

* use 2.0.0 resouces

* fixed film picket tests

* migrated to iap 1.0.1

* autofocus film name field

* wait for the film to edited

* migrated to iap 1.1.0

* typo

* wait for storage initialization

* migrated to iap 1.1.1

* fixed films initialization

* added conditions to films model `updateShouldNotifyDependent`

* typo

* fixed select film discard notify

* covered films model `updateShouldNotifyDependent`
2024-11-03 20:16:01 +01:00
.github Include generated release notes in builds (#194) 2024-10-08 19:53:15 +02:00
.vscode ML-44 Save zoom level for equipment profile (#164) 2024-04-07 10:54:57 +02:00
android Upgraded targetSdkVersion to 34 2024-07-23 23:21:00 +02:00
assets Release v0.21.0 2024-10-09 08:51:49 +00:00
doc Automated release screenshots generation (#177) 2024-05-21 19:13:33 +02:00
iap ML-191 Add an ability to add a generic film, that will accept a formula (#195) 2024-11-03 20:16:01 +01:00
integration_test ML-191 Add an ability to add a generic film, that will accept a formula (#195) 2024-11-03 20:16:01 +01:00
ios ML-157 Improve CI/CD (#162) 2024-03-17 20:04:27 +01:00
lib ML-191 Add an ability to add a generic film, that will accept a formula (#195) 2024-11-03 20:16:01 +01:00
resources ML-11 Implement volume buttons actions (#86) 2023-07-09 13:39:33 +02:00
screenshots ML-191 Add an ability to add a generic film, that will accept a formula (#195) 2024-11-03 20:16:01 +01:00
test ML-191 Add an ability to add a generic film, that will accept a formula (#195) 2024-11-03 20:16:01 +01:00
test_driver Automated release screenshots generation (#177) 2024-05-21 19:13:33 +02:00
.gitignore Automated release screenshots generation (#177) 2024-05-21 19:13:33 +02:00
.metadata init project 2022-10-15 19:35:35 +03:00
analysis_options.yaml ML-62 Interactors tests (#87) 2023-07-10 17:49:34 +02:00
crowdin.yml Push new localization strings to Crowdin (#30) 2023-02-12 13:09:55 +03:00
dart_test.yaml ML-166 Golden tests (#167) 2024-04-12 08:07:20 +02:00
LICENSE Initial commit 2022-10-15 16:00:14 +03:00
m3_lightmeter.code-workspace ML-107 Films filter (#118) 2023-09-14 16:59:16 +02:00
PRIVACY_POLICY.md Update PRIVACY_POLICY.md 2024-01-04 16:52:56 +01:00
pubspec.yaml ML-191 Add an ability to add a generic film, that will accept a formula (#195) 2024-11-03 20:16:01 +01:00
README.md Reordered screenshots in README 2024-05-22 22:51:13 +02:00
test_coverage.sh Fixed test coverage script 2024-03-17 20:18:00 +01:00
update_goldens.sh ML-166 Fixed golden tests run on CI (#168) 2024-04-12 10:43:19 +02:00

Table of contents

Backstory

Some time ago I've started developing the Material Lightmeter app. Unfortunately, the last update of this app was almost a year prior to creation of this repo. So after reading some positive review on Google Play saying that "this is an excellent app, too bad it is no longer updated", I've decided to make an update and also make this app open source. Maybe someone sometime will decide to contribute to this project.

But as the existing repo contained some sensitive data, that I've pushed due to lack of experience, I had to make a new one. And if creating a new repo, why not rewrite the app from scratch?

Without further delay behold my new Lightmeter app inspired by Material You (a.k.a. M3)

Screenshots

Development

1. Install Flutter

To build this app you need to install Flutter 3.13.9 stable. How to install.

2. Project setup

Restore constants.dart file

Create a file lib/constants.dart and paste the following content:

const String contactEmail = '';
const String iapServerUrl = '';
const String issuesReportUrl = '';
const String sourceCodeUrl = '';

Stub IAP package

As part of the app's functionallity is in the private repo, you have to replace these lines in pubspec.yaml:

m3_lightmeter_iap:
  git:
    url: "https://github.com/vodemn/m3_lightmeter_iap"
    ref: main

with these:

m3_lightmeter_iap:
  path: iap

You can do it simply by running the script:

sh .github/scripts/stub_iap.sh

If you are using VSCode, you can open the workspace like so: File -> Open Workspace from File -> m3_lightmeter.code-workspace. Otherwise you have to run flutter pub get command from the iap folder.

Then you can fetch all the neccessary dependencies and generate translation files by running the following commands:

flutter pub get
flutter pub run intl_utils:generate

3. (Optional) Install Firebase

Out of the box Firebase Crashlytics won't work. If you want to add Crashlytics to your local build please follow this guide.

4. Build

Support

To report a bug or suggest a new feature open a new issue. To contribute to the project feel free to open a Pull Request, but you need to follow this style guide.

In case you have any other questions please contact me via email.

iOS Limitations

A list of features, that Android version of the app has and that iOS does not.

Incident light metering

Apple does not provide API for reading Lux stream form the ambient light sensor. Lux can be calculated based on front camera image stream, but this would be a reflected light. So there is no way incident light metering can be implemented on iOS.

Volume buttons action

This can be implemented but the app will be rejected due to 2.5.9