Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f1c93c35f
|
||
|
|
fcc439a311
|
||
|
|
5a3eeed7b5
|
||
|
|
0e5e2403ce
|
||
|
|
76a655ac63
|
||
|
|
b458f8c0c8
|
||
|
|
2e5aafdb5a
|
||
|
|
fdd020f103
|
||
|
|
918215b5b8
|
||
|
|
b68e46c622
|
||
|
|
305cddea19
|
||
|
|
50886d97b3
|
||
|
|
692c255a19
|
||
|
|
4dc0b26e95
|
||
|
|
bf1d8f188f
|
||
|
|
a72babfafe
|
||
|
|
830d32152b
|
||
|
|
7f0544d19c
|
||
|
|
c005c3dc43
|
||
|
|
97c14c7a99
|
||
|
|
f37babc084
|
||
|
|
e6c234f0ea
|
||
|
|
2088e0e4bc
|
||
|
|
1e07b2ed1c
|
+2
-2
@@ -20,12 +20,12 @@ name: default
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: quality-check
|
- name: quality-check
|
||||||
image: git.wyatt-studio.fr/wyatt-foss/flutter-melos:2.9.0-1
|
image: git.wyatt-studio.fr/wyatt-foss/flutter-melos:2.9.0
|
||||||
commands:
|
commands:
|
||||||
- melos run quality-check
|
- melos run quality-check
|
||||||
- melos run publish:validate
|
- melos run publish:validate
|
||||||
- name: publish
|
- name: publish
|
||||||
image: git.wyatt-studio.fr/wyatt-foss/flutter-melos:2.9.0-1
|
image: git.wyatt-studio.fr/wyatt-foss/flutter-melos:2.9.0
|
||||||
commands:
|
commands:
|
||||||
- melos run publish:validate
|
- melos run publish:validate
|
||||||
|
|
||||||
|
|||||||
@@ -13,10 +13,6 @@ build/
|
|||||||
# If you're building an application, you may want to check-in your pubspec.lock
|
# If you're building an application, you may want to check-in your pubspec.lock
|
||||||
pubspec.lock
|
pubspec.lock
|
||||||
|
|
||||||
# Directory created by dartdoc
|
|
||||||
# If you don't generate documentation locally you can remove this line.
|
|
||||||
doc/api/
|
|
||||||
|
|
||||||
# dotenv environment variables file
|
# dotenv environment variables file
|
||||||
.env*
|
.env*
|
||||||
|
|
||||||
@@ -38,7 +34,6 @@ doc/api/
|
|||||||
|
|
||||||
### Flutter ###
|
### Flutter ###
|
||||||
# Flutter/Dart/Pub related
|
# Flutter/Dart/Pub related
|
||||||
**/doc/api/
|
|
||||||
.fvm/
|
.fvm/
|
||||||
.pub-cache/
|
.pub-cache/
|
||||||
.pub/
|
.pub/
|
||||||
|
|||||||
@@ -3,28 +3,6 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
## 2023-02-24
|
|
||||||
|
|
||||||
### Changes
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Packages with breaking changes:
|
|
||||||
|
|
||||||
- There are no breaking changes in this release.
|
|
||||||
|
|
||||||
Packages with other changes:
|
|
||||||
|
|
||||||
- [`wyatt_analysis` - `v2.4.1`](#wyatt_analysis---v241)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### `wyatt_analysis` - `v2.4.1`
|
|
||||||
|
|
||||||
- **FEAT**: add latest version persistence between script executions.
|
|
||||||
- **FEAT**: ignore todo's.
|
|
||||||
|
|
||||||
|
|
||||||
## 2023-02-07
|
## 2023-02-07
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|||||||
@@ -17,6 +17,10 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
|
|
||||||
|
<a href="https://wyattapp.io">
|
||||||
|
<img width="150px" src="resources/wyatt-campus-logo.png">
|
||||||
|
</a>
|
||||||
<a href="https://wyatt-studio.fr">
|
<a href="https://wyatt-studio.fr">
|
||||||
<img width="150px" src="resources/wyatt-studio-logo.png">
|
<img width="150px" src="resources/wyatt-studio-logo.png">
|
||||||
</a>
|
</a>
|
||||||
@@ -40,9 +44,10 @@
|
|||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
Here is a set of [Flutter plugins](https://flutter.io/platform-plugins/) that enhance your applications.
|
Here is it a set of [Flutter plugins](https://flutter.io/platform-plugins/) that power up your applications.
|
||||||
|
|
||||||
[Flutter](https://flutter.dev) is Google's UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop using a single codebase. It is used by developers and organizations worldwide and is free and open-source.
|
[Flutter](https://flutter.dev) is Google's UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase. Flutter is used by developers and organizations around the world, and is free
|
||||||
|
and open source.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -56,21 +61,21 @@ git clone ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
|
|||||||
|
|
||||||
### Prerequisite
|
### Prerequisite
|
||||||
|
|
||||||
1. [Flutter](https://github.com/flutter/flutter). It is a UI toolkit developed by Google for building beautiful and natively compiled applications for mobile, web, and desktop from a single codebase.
|
- [Flutter](https://github.com/flutter/flutter).
|
||||||
|
|
||||||
2. [Melos](https://github.com/invertase/melos). Melos is a tool that helps in managing Dart projects that have multiple packages. It can be installed using the following command:
|
- [Melos](https://github.com/invertase/melos). Used to manage Dart projects with multiple packages.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dart pub global activate melos
|
dart pub global activate melos
|
||||||
```
|
```
|
||||||
|
|
||||||
3. [Mason](https://github.com/felangel/mason). Mason is used for code generation purposes. It can be installed by running the following command:
|
- [Mason](https://github.com/felangel/mason). Used for code generation.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dart pub global activate mason_cli
|
dart pub global activate mason_cli
|
||||||
```
|
```
|
||||||
|
|
||||||
4. [Lcov](https://github.com/linux-test-project/lcov). Lcov is a tool used to generate coverage data. It can be installed on macOS by running the following command:
|
- [Lcov](https://github.com/linux-test-project/lcov). Used to generate coverage data.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# on macos
|
# on macos
|
||||||
@@ -79,39 +84,38 @@ brew install lcov
|
|||||||
|
|
||||||
- genhtml. Used to convert coverage data into html pages.
|
- genhtml. Used to convert coverage data into html pages.
|
||||||
|
|
||||||
After installation of all these packages, the project can be bootstrapped using the command `melos bs`.
|
After installing all these packages, bootstrap with `melos bs`.
|
||||||
|
|
||||||
### Create a new package
|
### Create a new package
|
||||||
|
|
||||||
Create a new package in `packages/` folder.
|
Create a new package in `packages/` folder.
|
||||||
To create a new package in the packages/ folder, run the following command in the terminal:
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
mason make wyatt_package --package_name wyatt_<name> --description A new Wyatt package --flutter_only false
|
mason make wyatt_package --package_name wyatt_<name> --description A new Wyatt package --flutter_only false
|
||||||
```
|
```
|
||||||
|
|
||||||
The <name> variable in the above command is important and must be clear and understandable.
|
Then bootstrap project with `melos bs` command.
|
||||||
|
|
||||||
After creating the package, bootstrap the project with the `melos bs` command.
|
|
||||||
|
|
||||||
#### Naming
|
#### Naming
|
||||||
|
|
||||||
In the previous instructions `<name>` variable is important.
|
In the previous instructions `<name>` variable is important.
|
||||||
It have to be clear and intelligible.
|
It have to be clear and intelligible.
|
||||||
|
|
||||||
1. You must use underscores in the name.
|
You **MUST** use underscores.
|
||||||
2. You must use the wyatt prefix for the package name.
|
|
||||||
3. You must name the example with a specific name.
|
|
||||||
|
|
||||||
For example, if the name is "CRUD BLOC," the following naming conventions should be used:
|
You **MUST** use `wyatt` prefix for package.
|
||||||
|
|
||||||
1. name: crud_bloc
|
You **MUST** name example with specific name.
|
||||||
2. package name: wyatt_crud_bloc
|
|
||||||
3. example name: crud_bloc_example
|
For example, if name is CRUD BLOC
|
||||||
|
|
||||||
|
- name will be crud_bloc
|
||||||
|
- so the package will be: `wyatt_crud_bloc`
|
||||||
|
- and the example will be: `crud_bloc_example`
|
||||||
|
|
||||||
### Create issues
|
### Create issues
|
||||||
|
|
||||||
Create an issue for each specific feature or task you want to work on and label it correctly using the following format:
|
Add the issues directly related to what you want to develop and label them correctly.
|
||||||
|
|
||||||
```
|
```
|
||||||
Type(scope): issue.
|
Type(scope): issue.
|
||||||
@@ -124,18 +128,18 @@ For example, on notification bloc package :
|
|||||||
|
|
||||||
### Branches
|
### Branches
|
||||||
|
|
||||||
The master branch is protected and cannot be pushed to directly. Please create a separate branch for each feature or task, with a name that corresponds to the related issue. The branch name should follow this format:
|
Master is protected. You can't push on it. Please develop your feature on another branch. The name of your branch has to match with the issue opened.
|
||||||
|
|
||||||
`type(scope):issue`
|
`type(scope):issue`
|
||||||
|
|
||||||
Example :
|
Example :
|
||||||
For the issue:
|
Issue :
|
||||||
|
|
||||||
- `Feature(notification_bloc): add firebase messaging data source.`
|
- `Feature(notification_bloc): add firebase messaging data source.`
|
||||||
|
|
||||||
The related branch should be named:
|
Branch related to this issue :
|
||||||
|
|
||||||
- `notification_bloc/feat/add_firebase_messaging_data_source`
|
- `feature(notification_bloc)/add_firebase_messaging_data_source`
|
||||||
|
|
||||||
### Commits
|
### Commits
|
||||||
|
|
||||||
@@ -159,11 +163,12 @@ Some examples :
|
|||||||
- `docs: update readme.` = update **this** readme file.
|
- `docs: update readme.` = update **this** readme file.
|
||||||
- `fix(crud)!: fix bug in awesome() function. (#32)` = fix a bug, `!` is important and indicate `BREAKING CHANGES` linked with the 32nd issue.
|
- `fix(crud)!: fix bug in awesome() function. (#32)` = fix a bug, `!` is important and indicate `BREAKING CHANGES` linked with the 32nd issue.
|
||||||
|
|
||||||
When you have completed your development work and are ready to resolve the related issue, you can close it via your commit message by including (close #issue_number). For example:
|
When you have finished developing, and are ready to close the issue, close it via your commit :
|
||||||
|
|
||||||
```shell
|
`feat(auth): add AWS support. (close #31)`
|
||||||
feat(auth): add AWS support. (close #31)
|
|
||||||
```
|
Note that your issue will be close after merging on master.
|
||||||
|
Before closing the issue, please check tests and update coverage. You might run :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
melos run test:all # this will run all tests in this project
|
melos run test:all # this will run all tests in this project
|
||||||
@@ -174,44 +179,45 @@ melos run publish:validate # this will run a validation before publish packages
|
|||||||
melos run publish # this will publish packages
|
melos run publish # this will publish packages
|
||||||
```
|
```
|
||||||
|
|
||||||
Please note that the issue will only be closed after it has been merged into the master branch. Before closing the issue, it is important to verify that all tests have been run and that coverage has been updated.
|
> Note that only modified package will be verified and published.
|
||||||
|
|
||||||
#### Merge your work
|
#### Merge your work
|
||||||
|
|
||||||
When you have completed your work and closed the related issue, it's possible that some changes may have been made to the master branch in the meantime. To maintain a clean Git history, it's recommended to rebase before creating a change request (pull request).
|
After closing your issue, some work may have been done on master in the meantime. To keep a clean git history, please rebase before opening a change request.
|
||||||
|
|
||||||
Two situations :
|
Two situations :
|
||||||
|
|
||||||
- You haven't created a branch yet and have made local commits:
|
- You have not yet created your branch and have committed locally :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git pull --rebase
|
git pull --rebase
|
||||||
```
|
```
|
||||||
|
|
||||||
- You are already working on a branch:
|
- You are already working on your branch :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git rebase -i master
|
git rebase -i master
|
||||||
```
|
```
|
||||||
|
|
||||||
It's recommended to use the `--fixup` option during the interactive rebase to keep the Git history clean.
|
If possible, please use `--fixup` on your commit in interactive rebase.
|
||||||
|
|
||||||
Once you have rebased, you can create a pull request, receive the necessary approvals, and then merge your work. And with that, you're done! 🎉
|
Then, opend your PR, get the necessary approval and merge your work. Then you're done ✅.
|
||||||
|
|
||||||
#### Update version.
|
#### Update version.
|
||||||
|
|
||||||
When your work has been merged into the master branch, it's time to update the package version. To update only your specific package, use the --scope option. For example, after merging changes into the `wyatt_notification_bloc` package, you can run the following command:
|
Once your work is on the master, you can update your package version. Please filter packages to update only your package. `--scope` is used to do it.
|
||||||
|
For example, after merging changes on `wyatt_otification_bloc` package, you might run :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
melos version --scope="*wyatt_notification_bloc*"
|
melos version --scope="*wyatt_notification_bloc*"
|
||||||
```
|
```
|
||||||
|
|
||||||
This will filter all packages that match the `wyatt_notification_bloc` pattern and update only that package.
|
In fact, melos will filter all packages that match the `wyatt_notification_block` pattern.
|
||||||
|
|
||||||
You can then verify that all packages and their tests are working correctly by running:
|
You can update check all packages tests by running :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
melos run test:all
|
melos run test
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Publish your package
|
#### Publish your package
|
||||||
@@ -259,14 +265,14 @@ Here you can change `package name` and `package version`.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Simple work flow diagramm
|
|
||||||
|
|
||||||
To sum up, here a simple work flow diagramm.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
This repository is maintained by Wyatt Studio but work is in progress.
|
This repository is maintained by Wyatt Studio but work is in progress.
|
||||||
|
|
||||||
|
## Simple work flow diagramm
|
||||||
|
|
||||||
|
To sum up, here a simple work flow diagramm.
|
||||||
|
|
||||||
|

|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
{"bricks":{"wyatt_component_template":{"git":{"url":"ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-bricks.git","path":"bricks/wyatt_component_template","ref":"7cea909470ce75b91840f479649b93f953ded596"}}}}
|
{"bricks":{"wyatt_clean_code":{"git":{"url":"ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-bricks.git","path":"bricks/wyatt_clean_code","ref":"5009f1ef21d8531b773298c0fc08704d8f69afd1"}},"wyatt_feature_brick":{"git":{"url":"ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-bricks.git","path":"bricks/wyatt_feature_brick","ref":"5009f1ef21d8531b773298c0fc08704d8f69afd1"}},"wyatt_package_template":{"git":{"url":"ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-bricks.git","path":"bricks/wyatt_package_template","ref":"5009f1ef21d8531b773298c0fc08704d8f69afd1"}}}}
|
||||||
+8
-20
@@ -1,25 +1,13 @@
|
|||||||
# Copyright (C) 2023 WYATT GROUP
|
|
||||||
# Please see the AUTHORS file for details.
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
bricks:
|
bricks:
|
||||||
|
wyatt_clean_code:
|
||||||
|
git:
|
||||||
|
url: "ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-bricks.git"
|
||||||
|
path: bricks/wyatt_clean_code
|
||||||
|
wyatt_feature_brick:
|
||||||
|
git:
|
||||||
|
url: "ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-bricks.git"
|
||||||
|
path: bricks/wyatt_feature_brick
|
||||||
wyatt_package_template:
|
wyatt_package_template:
|
||||||
git:
|
git:
|
||||||
url: "ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-bricks.git"
|
url: "ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-bricks.git"
|
||||||
path: bricks/wyatt_package_template
|
path: bricks/wyatt_package_template
|
||||||
wyatt_component_template:
|
|
||||||
git:
|
|
||||||
url: "ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-bricks.git"
|
|
||||||
path: bricks/wyatt_component_template
|
|
||||||
+4
-8
@@ -24,17 +24,13 @@ scripts:
|
|||||||
melos exec -c 1 -- flutter analyze --fatal-infos
|
melos exec -c 1 -- flutter analyze --fatal-infos
|
||||||
description: Run `flutter analyze` for all packages.
|
description: Run `flutter analyze` for all packages.
|
||||||
|
|
||||||
fix:
|
|
||||||
run: melos exec dart fix . --apply
|
|
||||||
description: Run `dart fix` for all packages.
|
|
||||||
|
|
||||||
format:
|
format:
|
||||||
run: melos exec dart format .
|
run: melos exec flutter format . --fix
|
||||||
description: Run `dart format` for all packages.
|
description: Run `flutter format` for all packages.
|
||||||
|
|
||||||
format-check:
|
format-check:
|
||||||
run: melos exec dart fix . --set-exit-if-changed
|
run: melos exec flutter format . --set-exit-if-changed
|
||||||
description: Run `dart fix` checks for all packages.
|
description: Run `flutter format` checks for all packages.
|
||||||
|
|
||||||
clean:deep:
|
clean:deep:
|
||||||
run: git clean -x -d -f -q
|
run: git clean -x -d -f -q
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
2.4.1
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
new_version.sh
|
|
||||||
.latest_version
|
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2023 WYATT GROUP
|
* Copyright (C) 2022 WYATT GROUP
|
||||||
* Please see the AUTHORS file for details.
|
* Please see the AUTHORS file for details.
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
## 2.4.1
|
|
||||||
|
|
||||||
- **FEAT**: add latest version persistence between script executions.
|
|
||||||
- **FEAT**: ignore todo's.
|
|
||||||
|
|
||||||
## 2.4.0
|
## 2.4.0
|
||||||
|
|
||||||
- **FEAT**: add new lint rules.
|
- **FEAT**: add new lint rules.
|
||||||
|
|||||||
@@ -20,18 +20,10 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
This package provides lint rules for Dart and Flutter which are used at [Wyatt](https://wyattapp.io) and [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.4.1.yaml**.
|
This package provides lint rules for Dart and Flutter which are used at [Wyatt](https://wyattapp.io) and [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.4.0.yaml**.
|
||||||
|
|
||||||
**Note**: This package was heavily inspired by [pedantic](https://github.com/dart-lang/pedantic), [Very Good Analysis](https://github.com/VeryGoodOpenSource/very_good_analysis) and the official [flutter_lints](https://pub.dev/packages/flutter_lints).
|
**Note**: This package was heavily inspired by [pedantic](https://github.com/dart-lang/pedantic), [Very Good Analysis](https://github.com/VeryGoodOpenSource/very_good_analysis) and the official [flutter_lints](https://pub.dev/packages/flutter_lints).
|
||||||
|
|
||||||
## Adding Wyatt Analysis to your project
|
|
||||||
|
|
||||||
Using CLI:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dart pub add wyatt_analysis:2.4.1 --dev --hosted-url=https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
To use the lints, add a dependency in your `pubspec.yaml` :
|
To use the lints, add a dependency in your `pubspec.yaml` :
|
||||||
@@ -39,7 +31,7 @@ To use the lints, add a dependency in your `pubspec.yaml` :
|
|||||||
```yaml
|
```yaml
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
version: 2.4.1
|
version: 2.4.0
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, add an include in `analysis_options.yaml` :
|
Then, add an include in `analysis_options.yaml` :
|
||||||
@@ -57,13 +49,13 @@ include: package:wyatt_analysis/analysis_options.flutter.yaml
|
|||||||
If you wish to restrict the lint version, specify a version of `analysis_options.yaml` instead:
|
If you wish to restrict the lint version, specify a version of `analysis_options.yaml` instead:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
include: package:wyatt_analysis/analysis_options.flutter.2.4.1.yaml
|
include: package:wyatt_analysis/analysis_options.flutter.2.4.0.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
If you just want **Dart** version:
|
If you just want **Dart** version:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
include: package:wyatt_analysis/analysis_options.2.4.1.yaml
|
include: package:wyatt_analysis/analysis_options.2.4.0.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
## Suppressing Lints
|
## Suppressing Lints
|
||||||
@@ -117,11 +109,10 @@ To indicate your project is using `wyatt_analysis` → [![style: wyatt analysis]
|
|||||||
When you want to create a new version of the plugin. Before any modification, execute the following command to create new files:
|
When you want to create a new version of the plugin. Before any modification, execute the following command to create new files:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./new_version.sh <new_version>
|
./new_version.sh <previous_version> <new_version>
|
||||||
```
|
```
|
||||||
|
> Where `<previous_version>` is 2.4.0
|
||||||
|
|
||||||
The previous version is automatically detected thanks to the `.latest_version` file.
|
|
||||||
So `.latest_version` needs to be versioned!
|
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
|
|||||||
@@ -1,217 +0,0 @@
|
|||||||
# Copyright (C) 2023 WYATT GROUP
|
|
||||||
# Please see the AUTHORS file for details.
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
analyzer:
|
|
||||||
language:
|
|
||||||
strict-casts: true
|
|
||||||
strict-inference: true
|
|
||||||
strict-raw-types: true
|
|
||||||
|
|
||||||
errors:
|
|
||||||
todo: ignore
|
|
||||||
close_sinks: ignore
|
|
||||||
missing_required_param: error
|
|
||||||
missing_return: error
|
|
||||||
|
|
||||||
exclude:
|
|
||||||
- lib/l10n/**
|
|
||||||
- lib/generated/**
|
|
||||||
- lib/gen/**
|
|
||||||
- lib/generated_plugin_registrant.dart
|
|
||||||
- test/.test_coverage.dart
|
|
||||||
- "**/*.g.dart"
|
|
||||||
- "**/*.freezed.dart"
|
|
||||||
|
|
||||||
linter:
|
|
||||||
rules:
|
|
||||||
- always_declare_return_types
|
|
||||||
- always_put_control_body_on_new_line
|
|
||||||
- always_put_required_named_parameters_first
|
|
||||||
- always_require_non_null_named_parameters
|
|
||||||
- always_use_package_imports
|
|
||||||
- annotate_overrides
|
|
||||||
- avoid_bool_literals_in_conditional_expressions
|
|
||||||
- avoid_catching_errors
|
|
||||||
- avoid_double_and_int_checks
|
|
||||||
- avoid_dynamic_calls
|
|
||||||
- avoid_empty_else
|
|
||||||
- avoid_equals_and_hash_code_on_mutable_classes
|
|
||||||
- avoid_escaping_inner_quotes
|
|
||||||
- avoid_field_initializers_in_const_classes
|
|
||||||
- avoid_final_parameters
|
|
||||||
- avoid_function_literals_in_foreach_calls
|
|
||||||
- avoid_init_to_null
|
|
||||||
- avoid_js_rounded_ints
|
|
||||||
- avoid_multiple_declarations_per_line
|
|
||||||
- avoid_null_checks_in_equality_operators
|
|
||||||
- avoid_positional_boolean_parameters
|
|
||||||
- avoid_private_typedef_functions
|
|
||||||
- avoid_redundant_argument_values
|
|
||||||
- avoid_relative_lib_imports
|
|
||||||
- avoid_renaming_method_parameters
|
|
||||||
- avoid_return_types_on_setters
|
|
||||||
- avoid_returning_null
|
|
||||||
- avoid_returning_null_for_future
|
|
||||||
- avoid_returning_null_for_void
|
|
||||||
- avoid_returning_this
|
|
||||||
- avoid_setters_without_getters
|
|
||||||
- avoid_shadowing_type_parameters
|
|
||||||
- avoid_single_cascade_in_expression_statements
|
|
||||||
- avoid_slow_async_io
|
|
||||||
- avoid_type_to_string
|
|
||||||
- avoid_types_as_parameter_names
|
|
||||||
- avoid_types_on_closure_parameters
|
|
||||||
- avoid_unused_constructor_parameters
|
|
||||||
- avoid_void_async
|
|
||||||
- await_only_futures
|
|
||||||
- camel_case_extensions
|
|
||||||
- camel_case_types
|
|
||||||
- cancel_subscriptions
|
|
||||||
- cascade_invocations
|
|
||||||
- cast_nullable_to_non_nullable
|
|
||||||
- collection_methods_unrelated_type
|
|
||||||
- combinators_ordering
|
|
||||||
- comment_references
|
|
||||||
- conditional_uri_does_not_exist
|
|
||||||
- constant_identifier_names
|
|
||||||
- control_flow_in_finally
|
|
||||||
- curly_braces_in_flow_control_structures
|
|
||||||
- depend_on_referenced_packages
|
|
||||||
- deprecated_consistency
|
|
||||||
- directives_ordering
|
|
||||||
- empty_catches
|
|
||||||
- empty_constructor_bodies
|
|
||||||
- empty_statements
|
|
||||||
- eol_at_end_of_file
|
|
||||||
- exhaustive_cases
|
|
||||||
- file_names
|
|
||||||
- flutter_style_todos
|
|
||||||
- hash_and_equals
|
|
||||||
- implementation_imports
|
|
||||||
- implicit_call_tearoffs
|
|
||||||
- iterable_contains_unrelated_type
|
|
||||||
- join_return_with_assignment
|
|
||||||
- leading_newlines_in_multiline_strings
|
|
||||||
- library_names
|
|
||||||
- library_prefixes
|
|
||||||
- library_private_types_in_public_api
|
|
||||||
- lines_longer_than_80_chars
|
|
||||||
- list_remove_unrelated_type
|
|
||||||
- literal_only_boolean_expressions
|
|
||||||
- missing_whitespace_between_adjacent_strings
|
|
||||||
- no_adjacent_strings_in_list
|
|
||||||
- no_default_cases
|
|
||||||
- no_duplicate_case_values
|
|
||||||
- no_leading_underscores_for_library_prefixes
|
|
||||||
- no_leading_underscores_for_local_identifiers
|
|
||||||
- no_runtimeType_toString
|
|
||||||
- non_constant_identifier_names
|
|
||||||
- noop_primitive_operations
|
|
||||||
- null_check_on_nullable_type_parameter
|
|
||||||
- null_closures
|
|
||||||
- one_member_abstracts
|
|
||||||
- only_throw_errors
|
|
||||||
- overridden_fields
|
|
||||||
- package_api_docs
|
|
||||||
- package_names
|
|
||||||
- package_prefixed_library_names
|
|
||||||
- parameter_assignments
|
|
||||||
- prefer_adjacent_string_concatenation
|
|
||||||
- prefer_asserts_in_initializer_lists
|
|
||||||
- prefer_asserts_with_message
|
|
||||||
- prefer_collection_literals
|
|
||||||
- prefer_conditional_assignment
|
|
||||||
- prefer_const_constructors
|
|
||||||
- prefer_const_constructors_in_immutables
|
|
||||||
- prefer_const_declarations
|
|
||||||
- prefer_const_literals_to_create_immutables
|
|
||||||
- prefer_constructors_over_static_methods
|
|
||||||
- prefer_contains
|
|
||||||
- prefer_equal_for_default_values
|
|
||||||
- prefer_expression_function_bodies
|
|
||||||
- prefer_final_fields
|
|
||||||
- prefer_final_in_for_each
|
|
||||||
- prefer_final_locals
|
|
||||||
- prefer_for_elements_to_map_fromIterable
|
|
||||||
- prefer_function_declarations_over_variables
|
|
||||||
- prefer_generic_function_type_aliases
|
|
||||||
- prefer_if_elements_to_conditional_expressions
|
|
||||||
- prefer_if_null_operators
|
|
||||||
- prefer_initializing_formals
|
|
||||||
- prefer_inlined_adds
|
|
||||||
- prefer_int_literals
|
|
||||||
- prefer_interpolation_to_compose_strings
|
|
||||||
- prefer_is_empty
|
|
||||||
- prefer_is_not_empty
|
|
||||||
- prefer_is_not_operator
|
|
||||||
- prefer_iterable_whereType
|
|
||||||
- prefer_mixin
|
|
||||||
- prefer_null_aware_method_calls
|
|
||||||
- prefer_null_aware_operators
|
|
||||||
- prefer_single_quotes
|
|
||||||
- prefer_spread_collections
|
|
||||||
- prefer_typing_uninitialized_variables
|
|
||||||
- prefer_void_to_null
|
|
||||||
- provide_deprecation_message
|
|
||||||
- recursive_getters
|
|
||||||
- require_trailing_commas
|
|
||||||
- slash_for_doc_comments
|
|
||||||
- sort_constructors_first
|
|
||||||
- sort_unnamed_constructors_first
|
|
||||||
- test_types_in_equals
|
|
||||||
- throw_in_finally
|
|
||||||
- tighten_type_of_initializing_formals
|
|
||||||
- type_annotate_public_apis
|
|
||||||
- type_init_formals
|
|
||||||
- unawaited_futures
|
|
||||||
- unnecessary_await_in_return
|
|
||||||
- unnecessary_brace_in_string_interps
|
|
||||||
- unnecessary_const
|
|
||||||
- unnecessary_constructor_name
|
|
||||||
- unnecessary_getters_setters
|
|
||||||
- unnecessary_lambdas
|
|
||||||
- unnecessary_late
|
|
||||||
- unnecessary_new
|
|
||||||
- unnecessary_null_aware_assignments
|
|
||||||
- unnecessary_null_checks
|
|
||||||
- unnecessary_null_in_if_null_operators
|
|
||||||
- unnecessary_nullable_for_final_variable_declarations
|
|
||||||
- unnecessary_overrides
|
|
||||||
- unnecessary_parenthesis
|
|
||||||
- unnecessary_raw_strings
|
|
||||||
- unnecessary_statements
|
|
||||||
- unnecessary_string_escapes
|
|
||||||
- unnecessary_string_interpolations
|
|
||||||
- unnecessary_this
|
|
||||||
- unnecessary_to_list_in_spreads
|
|
||||||
- unrelated_type_equality_checks
|
|
||||||
- unsafe_html
|
|
||||||
- use_enums
|
|
||||||
- use_function_type_syntax_for_parameters
|
|
||||||
- use_if_null_to_convert_nulls_to_bools
|
|
||||||
- use_is_even_rather_than_modulo
|
|
||||||
- use_late_for_private_fields_and_variables
|
|
||||||
- use_named_constants
|
|
||||||
- use_raw_strings
|
|
||||||
- use_rethrow_when_possible
|
|
||||||
- use_setters_to_change_properties
|
|
||||||
- use_string_buffers
|
|
||||||
- use_string_in_part_of_directives
|
|
||||||
- use_super_parameters
|
|
||||||
- use_test_throws_matchers
|
|
||||||
- use_to_and_as_if_applicable
|
|
||||||
- valid_regexps
|
|
||||||
- void_checks
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# Copyright (C) 2023 WYATT GROUP
|
|
||||||
# Please see the AUTHORS file for details.
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
include: package:wyatt_analysis/analysis_options.2.4.1.yaml
|
|
||||||
|
|
||||||
linter:
|
|
||||||
rules:
|
|
||||||
- avoid_print
|
|
||||||
- avoid_unnecessary_containers
|
|
||||||
- avoid_web_libraries_in_flutter
|
|
||||||
- no_logic_in_create_state
|
|
||||||
- sized_box_for_whitespace
|
|
||||||
- sized_box_shrink_expand
|
|
||||||
- sort_child_properties_last
|
|
||||||
- use_build_context_synchronously
|
|
||||||
- use_colored_box
|
|
||||||
- use_decorated_box
|
|
||||||
- use_full_hex_values_for_flutter_colors
|
|
||||||
- use_key_in_widget_constructors
|
|
||||||
@@ -14,4 +14,5 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
include: package:wyatt_analysis/analysis_options.flutter.2.4.1.yaml
|
include: package:wyatt_analysis/analysis_options.flutter.2.4.0.yaml
|
||||||
|
|
||||||
|
|||||||
@@ -14,4 +14,5 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
include: package:wyatt_analysis/analysis_options.2.4.1.yaml
|
include: package:wyatt_analysis/analysis_options.2.4.0.yaml
|
||||||
|
|
||||||
|
|||||||
@@ -18,4 +18,4 @@
|
|||||||
/// used internally at [Wyatt Studio](https://wyatt-studio.fr).
|
/// used internally at [Wyatt Studio](https://wyatt-studio.fr).
|
||||||
library wyatt_analysis;
|
library wyatt_analysis;
|
||||||
|
|
||||||
const String wyattAnalysisVersion = '2.4.1';
|
const String wyattAnalysisVersion = '2.4.0';
|
||||||
|
|||||||
@@ -18,12 +18,20 @@
|
|||||||
|
|
||||||
usage="
|
usage="
|
||||||
usage:
|
usage:
|
||||||
$(basename "$0") <new_version> -- create new analyzer files.
|
$(basename "$0") <previous_version> <new_version> -- create new analyzer files.
|
||||||
|
|
||||||
where:
|
where:
|
||||||
|
previous_version: last version, for example \`2.3.0\`
|
||||||
new_version: new version, for example \`2.4.0\`"
|
new_version: new version, for example \`2.4.0\`"
|
||||||
|
|
||||||
new=$1
|
old=$1
|
||||||
|
new=$2
|
||||||
|
|
||||||
|
if [ -z "$old" ]; then
|
||||||
|
echo "previous_version cannot be null"
|
||||||
|
echo "${usage}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "$new" ]; then
|
if [ -z "$new" ]; then
|
||||||
echo "new_version cannot be null"
|
echo "new_version cannot be null"
|
||||||
@@ -35,19 +43,6 @@ SCRIPT_PATH="${BASH_SOURCE:-$0}"
|
|||||||
ABS_SCRIPT_PATH="$(realpath "${SCRIPT_PATH}")"
|
ABS_SCRIPT_PATH="$(realpath "${SCRIPT_PATH}")"
|
||||||
ABS_DIRECTORY="$(dirname "${ABS_SCRIPT_PATH}")"
|
ABS_DIRECTORY="$(dirname "${ABS_SCRIPT_PATH}")"
|
||||||
|
|
||||||
LATEST_VERSION="${ABS_DIRECTORY}/.latest_version"
|
|
||||||
|
|
||||||
# Read latest version
|
|
||||||
if [ -e "$LATEST_VERSION" ]; then
|
|
||||||
old=$(cat "$LATEST_VERSION")
|
|
||||||
echo "> latest package version is: $old"
|
|
||||||
echo "> new package version is: $new"
|
|
||||||
else
|
|
||||||
echo "latest version is not set"
|
|
||||||
echo "create a file named \`.latest_version\` in the root of the project"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
LIB="${ABS_DIRECTORY}/lib/wyatt_analysis.dart"
|
LIB="${ABS_DIRECTORY}/lib/wyatt_analysis.dart"
|
||||||
OPTIONS="${ABS_DIRECTORY}/lib/analysis_options.yaml"
|
OPTIONS="${ABS_DIRECTORY}/lib/analysis_options.yaml"
|
||||||
OLD_OPTIONS="${ABS_DIRECTORY}/lib/analysis_options.${old}.yaml"
|
OLD_OPTIONS="${ABS_DIRECTORY}/lib/analysis_options.${old}.yaml"
|
||||||
@@ -57,7 +52,6 @@ OPTIONS_FLUTTER="${ABS_DIRECTORY}/lib/analysis_options.flutter.yaml"
|
|||||||
OLD_OPTIONS_FLUTTER="${ABS_DIRECTORY}/lib/analysis_options.flutter.${old}.yaml"
|
OLD_OPTIONS_FLUTTER="${ABS_DIRECTORY}/lib/analysis_options.flutter.${old}.yaml"
|
||||||
NEW_OPTIONS_FLUTTER="${ABS_DIRECTORY}/lib/analysis_options.flutter.${new}.yaml"
|
NEW_OPTIONS_FLUTTER="${ABS_DIRECTORY}/lib/analysis_options.flutter.${new}.yaml"
|
||||||
|
|
||||||
|
|
||||||
if [ ! -e "$OLD_OPTIONS" ]; then
|
if [ ! -e "$OLD_OPTIONS" ]; then
|
||||||
echo "analysis_options.${old}.yaml doesn't exists"
|
echo "analysis_options.${old}.yaml doesn't exists"
|
||||||
echo "${usage}"
|
echo "${usage}"
|
||||||
@@ -97,7 +91,7 @@ sed -e "s/${old}/${new}/g" "README.md" > tempfile.tmp
|
|||||||
mv -f tempfile.tmp "README.md"
|
mv -f tempfile.tmp "README.md"
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
# Copyright (C) 2023 WYATT GROUP
|
# Copyright (C) 2022 WYATT GROUP
|
||||||
# Please see the AUTHORS file for details.
|
# Please see the AUTHORS file for details.
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
@@ -117,7 +111,7 @@ include: package:wyatt_analysis/analysis_options.${new}.yaml
|
|||||||
" > "${OPTIONS}"
|
" > "${OPTIONS}"
|
||||||
|
|
||||||
echo "
|
echo "
|
||||||
# Copyright (C) 2023 WYATT GROUP
|
# Copyright (C) 2022 WYATT GROUP
|
||||||
# Please see the AUTHORS file for details.
|
# Please see the AUTHORS file for details.
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
@@ -136,7 +130,4 @@ echo "
|
|||||||
include: package:wyatt_analysis/analysis_options.flutter.${new}.yaml
|
include: package:wyatt_analysis/analysis_options.flutter.${new}.yaml
|
||||||
" > "${OPTIONS_FLUTTER}"
|
" > "${OPTIONS_FLUTTER}"
|
||||||
|
|
||||||
# Update latest version
|
|
||||||
echo "${new}" > "$LATEST_VERSION"
|
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
name: wyatt_analysis
|
name: wyatt_analysis
|
||||||
description: Lint rules for Dart and Flutter used internally at Wyatt Studio.
|
description: Lint rules for Dart and Flutter used internally at Wyatt Studio.
|
||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis
|
||||||
version: 2.4.1
|
version: 2.4.0
|
||||||
|
|
||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.12.0 <3.0.0"
|
sdk: '>=2.12.0 <3.0.0'
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
import 'package:architecture_example/data/models/photo_model.dart';
|
import 'package:architecture_example/data/models/photo_model.dart';
|
||||||
|
|
||||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import 'package:wyatt_architecture/wyatt_architecture.dart';
|
|||||||
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
||||||
|
|
||||||
class PhotoRepositoryImpl extends PhotoRepository {
|
class PhotoRepositoryImpl extends PhotoRepository {
|
||||||
|
|
||||||
PhotoRepositoryImpl(
|
PhotoRepositoryImpl(
|
||||||
this._photoRemoteDataSource,
|
this._photoRemoteDataSource,
|
||||||
this._albumRemoteDataSource,
|
this._albumRemoteDataSource,
|
||||||
|
|||||||
+1
@@ -21,6 +21,7 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class AddPhotoToFavorites extends AsyncUseCase<Photo, List<Photo>> {
|
class AddPhotoToFavorites extends AsyncUseCase<Photo, List<Photo>> {
|
||||||
|
|
||||||
AddPhotoToFavorites(this._photoRepository);
|
AddPhotoToFavorites(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
|||||||
+1
@@ -20,6 +20,7 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class CheckIfPhotoIsInFavorites extends AsyncUseCase<int, bool> {
|
class CheckIfPhotoIsInFavorites extends AsyncUseCase<int, bool> {
|
||||||
|
|
||||||
CheckIfPhotoIsInFavorites(this._photoRepository);
|
CheckIfPhotoIsInFavorites(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class DisplayFavorites extends AsyncUseCase<NoParam, List<Photo>> {
|
class DisplayFavorites extends AsyncUseCase<NoParam, List<Photo>> {
|
||||||
|
|
||||||
DisplayFavorites(this._photoRepository);
|
DisplayFavorites(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class DisplayPhoto extends AsyncUseCase<int, Photo> {
|
class DisplayPhoto extends AsyncUseCase<int, Photo> {
|
||||||
|
|
||||||
DisplayPhoto(this._photoRepository);
|
DisplayPhoto(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import 'package:architecture_example/domain/usecases/photos/params/query_paramet
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class OpenAlbum extends AsyncUseCase<QueryParameters, List<Photo>> {
|
class OpenAlbum extends AsyncUseCase<QueryParameters, List<Photo>> {
|
||||||
|
|
||||||
OpenAlbum(this._photoRepository);
|
OpenAlbum(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
|||||||
+1
@@ -15,6 +15,7 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
class QueryParameters {
|
class QueryParameters {
|
||||||
|
|
||||||
QueryParameters(this.start, this.limit, {this.albumId = -1});
|
QueryParameters(this.start, this.limit, {this.albumId = -1});
|
||||||
final int albumId;
|
final int albumId;
|
||||||
final int? start;
|
final int? start;
|
||||||
|
|||||||
+1
@@ -21,6 +21,7 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class RemovePhotoFromFavorites extends AsyncUseCase<int, List<Photo>> {
|
class RemovePhotoFromFavorites extends AsyncUseCase<int, List<Photo>> {
|
||||||
|
|
||||||
RemovePhotoFromFavorites(this._photoRepository);
|
RemovePhotoFromFavorites(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
|||||||
+1
@@ -22,6 +22,7 @@ import 'package:architecture_example/domain/usecases/photos/params/query_paramet
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class RetrieveAllAlbums extends AsyncUseCase<QueryParameters, List<Album>> {
|
class RetrieveAllAlbums extends AsyncUseCase<QueryParameters, List<Album>> {
|
||||||
|
|
||||||
RetrieveAllAlbums(this._photoRepository);
|
RetrieveAllAlbums(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
|||||||
+1
@@ -33,6 +33,7 @@ EventTransformer<E> throttleDroppable<E>(Duration duration) =>
|
|||||||
(events, mapper) => droppable<E>().call(events.throttle(duration), mapper);
|
(events, mapper) => droppable<E>().call(events.throttle(duration), mapper);
|
||||||
|
|
||||||
class AlbumBloc extends Bloc<AlbumEvent, AlbumState> {
|
class AlbumBloc extends Bloc<AlbumEvent, AlbumState> {
|
||||||
|
|
||||||
AlbumBloc(this._retrieveAllAlbums) : super(const AlbumState()) {
|
AlbumBloc(this._retrieveAllAlbums) : super(const AlbumState()) {
|
||||||
on<AlbumFetched>(
|
on<AlbumFetched>(
|
||||||
_onAlbumFetched,
|
_onAlbumFetched,
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ class AlbumsScreen extends BlocScreen<AlbumBloc, AlbumEvent, AlbumState> {
|
|||||||
bloc..add(AlbumFetched());
|
bloc..add(AlbumFetched());
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget parent(BuildContext context, Widget child) => AlbumsWrapperWidget(
|
Widget onWrap(BuildContext context, Widget child) => AlbumsWrapperWidget(
|
||||||
child: child,
|
child: child,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
+2
-5
@@ -22,11 +22,8 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
class AlbumsList extends StatefulWidget {
|
class AlbumsList extends StatefulWidget {
|
||||||
const AlbumsList({
|
const AlbumsList(
|
||||||
required this.albums,
|
{required this.albums, required this.hasReachedMax, super.key,});
|
||||||
required this.hasReachedMax,
|
|
||||||
super.key,
|
|
||||||
});
|
|
||||||
|
|
||||||
final List<Album> albums;
|
final List<Album> albums;
|
||||||
final bool hasReachedMax;
|
final bool hasReachedMax;
|
||||||
|
|||||||
+2
@@ -26,6 +26,7 @@ abstract class PhotoDetailsState extends Equatable {
|
|||||||
class PhotoDetailsInitial extends PhotoDetailsState {}
|
class PhotoDetailsInitial extends PhotoDetailsState {}
|
||||||
|
|
||||||
class PhotoDetailsSuccess extends PhotoDetailsState {
|
class PhotoDetailsSuccess extends PhotoDetailsState {
|
||||||
|
|
||||||
const PhotoDetailsSuccess(this.photo, {required this.isFavorite});
|
const PhotoDetailsSuccess(this.photo, {required this.isFavorite});
|
||||||
final Photo photo;
|
final Photo photo;
|
||||||
final bool isFavorite;
|
final bool isFavorite;
|
||||||
@@ -35,6 +36,7 @@ class PhotoDetailsSuccess extends PhotoDetailsState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class PhotoDetailsFailure extends PhotoDetailsState {
|
class PhotoDetailsFailure extends PhotoDetailsState {
|
||||||
|
|
||||||
const PhotoDetailsFailure(this.error);
|
const PhotoDetailsFailure(this.error);
|
||||||
final String error;
|
final String error;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -43,7 +43,7 @@ class PhotoDetailsScreen
|
|||||||
bloc..load(photoId);
|
bloc..load(photoId);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget parent(BuildContext context, Widget child) =>
|
Widget onWrap(BuildContext context, Widget child) =>
|
||||||
PhotoDetailsWrapperWidget(child: child);
|
PhotoDetailsWrapperWidget(child: child);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
+1
@@ -23,6 +23,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
|||||||
part 'favorite_checker_state.dart';
|
part 'favorite_checker_state.dart';
|
||||||
|
|
||||||
class FavoriteCheckerCubit extends Cubit<FavoriteCheckerState> {
|
class FavoriteCheckerCubit extends Cubit<FavoriteCheckerState> {
|
||||||
|
|
||||||
FavoriteCheckerCubit(this._checkIfPhotoIsInFavorites)
|
FavoriteCheckerCubit(this._checkIfPhotoIsInFavorites)
|
||||||
: super(FavoriteCheckerInitial());
|
: super(FavoriteCheckerInitial());
|
||||||
final CheckIfPhotoIsInFavorites _checkIfPhotoIsInFavorites;
|
final CheckIfPhotoIsInFavorites _checkIfPhotoIsInFavorites;
|
||||||
|
|||||||
+2
@@ -10,6 +10,7 @@ abstract class FavoriteCheckerState extends Equatable {
|
|||||||
class FavoriteCheckerInitial extends FavoriteCheckerState {}
|
class FavoriteCheckerInitial extends FavoriteCheckerState {}
|
||||||
|
|
||||||
class FavoriteCheckerSuccess extends FavoriteCheckerState {
|
class FavoriteCheckerSuccess extends FavoriteCheckerState {
|
||||||
|
|
||||||
const FavoriteCheckerSuccess(this.photoId, {required this.isFavorite});
|
const FavoriteCheckerSuccess(this.photoId, {required this.isFavorite});
|
||||||
final int photoId;
|
final int photoId;
|
||||||
final bool isFavorite;
|
final bool isFavorite;
|
||||||
@@ -19,6 +20,7 @@ class FavoriteCheckerSuccess extends FavoriteCheckerState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class FavoriteCheckerFailure extends FavoriteCheckerState {
|
class FavoriteCheckerFailure extends FavoriteCheckerState {
|
||||||
|
|
||||||
const FavoriteCheckerFailure(this.error);
|
const FavoriteCheckerFailure(this.error);
|
||||||
final String error;
|
final String error;
|
||||||
|
|
||||||
|
|||||||
+1
@@ -33,6 +33,7 @@ EventTransformer<E> throttleDroppable<E>(Duration duration) =>
|
|||||||
(events, mapper) => droppable<E>().call(events.throttle(duration), mapper);
|
(events, mapper) => droppable<E>().call(events.throttle(duration), mapper);
|
||||||
|
|
||||||
class PhotoBloc extends Bloc<PhotoEvent, PhotoState> {
|
class PhotoBloc extends Bloc<PhotoEvent, PhotoState> {
|
||||||
|
|
||||||
PhotoBloc(this._openAlbum) : super(const PhotoState()) {
|
PhotoBloc(this._openAlbum) : super(const PhotoState()) {
|
||||||
on<PhotoFetched>(
|
on<PhotoFetched>(
|
||||||
_onPhotoFetched,
|
_onPhotoFetched,
|
||||||
|
|||||||
+1
@@ -24,6 +24,7 @@ abstract class PhotoEvent extends Equatable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class PhotoFetched extends PhotoEvent {
|
class PhotoFetched extends PhotoEvent {
|
||||||
|
|
||||||
const PhotoFetched(this.albumId);
|
const PhotoFetched(this.albumId);
|
||||||
final int albumId;
|
final int albumId;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ class PhotosScreen extends BlocScreen<PhotoBloc, PhotoEvent, PhotoState> {
|
|||||||
bloc..add(PhotoFetched(albumId));
|
bloc..add(PhotoFetched(albumId));
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget parent(BuildContext context, Widget child) => PhotosWrapperWidget(
|
Widget onWrap(BuildContext context, Widget child) => PhotosWrapperWidget(
|
||||||
child: child,
|
child: child,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
+1
-4
@@ -55,10 +55,7 @@ class PhotosGridThumbnail
|
|||||||
),
|
),
|
||||||
if (state is FavoriteCheckerSuccess && state.isFavorite) ...[
|
if (state is FavoriteCheckerSuccess && state.isFavorite) ...[
|
||||||
const Positioned(
|
const Positioned(
|
||||||
bottom: 10,
|
bottom: 10, right: 10, child: Icon(Icons.favorite),)
|
||||||
right: 10,
|
|
||||||
child: Icon(Icons.favorite),
|
|
||||||
)
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ dev_dependencies:
|
|||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
git:
|
git:
|
||||||
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
||||||
ref: wyatt_analysis-v2.4.1
|
ref: wyatt_analysis-v2.4.0
|
||||||
path: packages/wyatt_analysis
|
path: packages/wyatt_analysis
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
||||||
|
|
||||||
abstract class AppException implements Exception {
|
abstract class AppException implements Exception {
|
||||||
|
|
||||||
AppException([this.message]);
|
AppException([this.message]);
|
||||||
final String? message;
|
final String? message;
|
||||||
|
|
||||||
|
|||||||
@@ -24,4 +24,4 @@ dev_dependencies:
|
|||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.4.1
|
version: ^2.4.0
|
||||||
@@ -23,7 +23,6 @@
|
|||||||
# Flutter/Dart/Pub related
|
# Flutter/Dart/Pub related
|
||||||
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
|
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
|
||||||
/pubspec.lock
|
/pubspec.lock
|
||||||
**/doc/api/
|
|
||||||
.dart_tool/
|
.dart_tool/
|
||||||
.packages
|
.packages
|
||||||
build/
|
build/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
* Copyright (C) 2022 WYATT GROUP
|
* Copyright (C) 2023 WYATT GROUP
|
||||||
* Please see the AUTHORS file for details.
|
* Please see the AUTHORS file for details.
|
||||||
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
@@ -19,9 +19,7 @@
|
|||||||
# Flutter - Authentication BLoC
|
# Flutter - Authentication BLoC
|
||||||
|
|
||||||
<p align="left">
|
<p align="left">
|
||||||
<a href="https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis">
|
<a href="https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis"><img src="https://img.shields.io/badge/Style-Wyatt%20Analysis-blue.svg?style=flat-square" alt="Style: Wyatt Analysis" /></a>
|
||||||
<img src="https://img.shields.io/badge/Style-Wyatt%20Analysis-blue.svg?style=flat-square" alt="Style: Wyatt Analysis" />
|
|
||||||
</a>
|
|
||||||
<img src="https://img.shields.io/badge/SDK-Flutter-blue?style=flat-square" alt="SDK: Flutter" />
|
<img src="https://img.shields.io/badge/SDK-Flutter-blue?style=flat-square" alt="SDK: Flutter" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -29,28 +27,22 @@ Authentication Bloc for Flutter.
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Wyatt Architecture
|
* 🧐 Wyatt Architecture
|
||||||
- Entities:
|
* 🧱 Entities
|
||||||
- Account : AccountModel -> Contains account information from provider
|
- Account -> Contains account information from provider.
|
||||||
- AccountWrapper : AccountWrapperModel -> Contains account and extra data.
|
- Session -> Contains account and associated data retrieved from an external source.
|
||||||
- Data Sources:
|
- AuthenticationChangeEvent -> Describes an event in authentication change (sign in, sign up, sign out, etc...)
|
||||||
- Local:
|
- SessionWrapper -> Contains latest authentication change event and session.
|
||||||
- Cached Authentication Data : AuthenticationCacheDataSourceImpl -> Provides a cache implementation
|
* 🔑 Powerful and secured authentication repository
|
||||||
- Remote:
|
* 🔥 Multiple data sources
|
||||||
- Remote Authentication Data : AuthenticationFirebaseDataSourceImpl -> Provides a proxy to FirebaseAuth
|
- Mock
|
||||||
- Repositories:
|
- Firebase
|
||||||
- AuthenticationRepository : AuthenticationRepositoryImpl -> Provides all authentication methods
|
* 🧊 Cubits, why make it complicated when you can make it simple?
|
||||||
- Features:
|
- Goes to the essential.
|
||||||
- Authentication:
|
* 📐 Consistent
|
||||||
- AuthenticationBuilder : widget to build reactive view from authentication state
|
- Every class have same naming convention
|
||||||
- AuthenticationCubit : tracks every auth changes, have sign out capability.
|
* 🧪 Tested
|
||||||
- SignUp:
|
* 📚 Documented: [available here](./doc/api/index.md)
|
||||||
- SignUpCubit: implementation of a FormDataCubit from `wyatt_form_bloc` for the sign up
|
|
||||||
- SignIn:
|
|
||||||
- SignUpCubit: implementation of a FormDataCubit from `wyatt_form_bloc` for the sign in
|
|
||||||
- Consistent
|
|
||||||
* Every class have same naming convention
|
|
||||||
- Tested
|
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
@@ -60,6 +52,170 @@ Simply add `wyatt_authentication_bloc` in `pubspec.yaml`, then
|
|||||||
import 'package:wyatt_authentication_bloc/wyatt_authentication_bloc.dart';
|
import 'package:wyatt_authentication_bloc/wyatt_authentication_bloc.dart';
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
### Data source
|
||||||
|
|
||||||
|
The first step is to provide a data source.
|
||||||
|
|
||||||
|
```dart
|
||||||
|
getIt.registerLazySingleton<AuthenticationRemoteDataSource<int>>(
|
||||||
|
() => AuthenticationFirebaseDataSourceImpl<int>(
|
||||||
|
firebaseAuth: FirebaseAuth.instance,
|
||||||
|
googleSignIn:
|
||||||
|
GoogleSignIn(clientId: DefaultFirebaseOptions.ios.iosClientId)),
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
> Here we use GetIt (see example project)
|
||||||
|
|
||||||
|
### Repository
|
||||||
|
|
||||||
|
Then you can configure your repository.
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final AuthenticationRepository<int> authenticationRepository = AuthenticationRepositoryImpl(
|
||||||
|
authenticationRemoteDataSource:
|
||||||
|
getIt<AuthenticationRemoteDataSource<int>>(),
|
||||||
|
customPasswordValidator: const CustomPassword.pure(),
|
||||||
|
extraSignUpInputs: [
|
||||||
|
FormInput(
|
||||||
|
AuthFormField.confirmPassword,
|
||||||
|
const ConfirmedPassword.pure(),
|
||||||
|
metadata: const FormInputMetadata<void>(export: false),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
> Here we pass some extra inputs for the sign up, and a custom password validator.
|
||||||
|
|
||||||
|
### Cubits
|
||||||
|
|
||||||
|
It is necessary to implement each cubit. Don't panic, most of the work is already done 😊 you just have to customize the logic of these.
|
||||||
|
|
||||||
|
In each of these cubits it is necessary to overload the various callbacks.
|
||||||
|
|
||||||
|
> Here the associated data `Data` is a `int`
|
||||||
|
|
||||||
|
#### Authentication
|
||||||
|
|
||||||
|
In the authentication are managed, the refresh, the deletion of account or the disconnection.
|
||||||
|
|
||||||
|
```dart
|
||||||
|
class ExampleAuthenticationCubit extends AuthenticationCubit<int> {
|
||||||
|
ExampleAuthenticationCubit({required super.authenticationRepository});
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onReauthenticate(Result<Account, AppException> result) async {
|
||||||
// TODO
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onRefresh(Result<Account, AppException> result) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignInFromCache(SessionWrapper<int> wrapper) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<void> onSignOut() {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<void> onDelete() {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Sign Up
|
||||||
|
|
||||||
|
```dart
|
||||||
|
class ExampleSignUpCubit extends SignUpCubit<int> {
|
||||||
|
ExampleSignUpCubit({
|
||||||
|
required super.authenticationRepository,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignUpWithEmailAndPassword(Result<Account, AppException> result, WyattForm form) async {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Sign In
|
||||||
|
|
||||||
|
```dart
|
||||||
|
class ExampleSignInCubit extends SignInCubit<int> {
|
||||||
|
ExampleSignInCubit({
|
||||||
|
required super.authenticationRepository,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignInWithEmailAndPassword(Result<Account, AppException> result, WyattForm form) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignInAnonymously(Result<Account, AppException> result, WyattForm form) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignInWithGoogle(Result<Account, AppException> result, WyattForm form) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
After setting up all these cubits you can provide them in the application. And that's it!
|
||||||
|
|
||||||
|
```dart
|
||||||
|
BlocProvider<SignUpCubit<int>>(
|
||||||
|
create: (_) => ExampleSignUpCubit(
|
||||||
|
authenticationRepository: authenticationRepository,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
BlocProvider<SignInCubit<int>>(
|
||||||
|
create: (_) => ExampleSignInCubit(
|
||||||
|
authenticationRepository: authenticationRepository,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
```
|
||||||
|
|
||||||
|
### Widgets
|
||||||
|
|
||||||
|
Widgets are provided to make your life easier. Starting with the `AuthenticationBuilder` which allows you to build according to the authentication state.
|
||||||
|
|
||||||
|
```dart
|
||||||
|
AuthenticationBuilder<int>(
|
||||||
|
authenticated: (context, sessionWrapper) => Text(
|
||||||
|
'Logged as ${sessionWrapper.session?.account.email} | GeneratedId is ${sessionWrapper.session?.data}'),
|
||||||
|
unauthenticated: (context) =>
|
||||||
|
const Text('Not logged (unauthenticated)'),
|
||||||
|
unknown: (context) => const Text('Not logged (unknown)'),
|
||||||
|
),
|
||||||
|
```
|
||||||
|
|
||||||
|
A `BuildContext` extension is also available to access certain attributes more quickly.
|
||||||
|
|
||||||
|
```dart
|
||||||
|
Text('Home | ${context.account<AuthenticationCubit<int>, int>()?.email}'),
|
||||||
|
```
|
||||||
|
|
||||||
|
Listeners are used to listen to the status of the sign in and sign up forms.
|
||||||
|
|
||||||
|
```dart
|
||||||
|
return SignInListener<int>(
|
||||||
|
onError: (context, status, errorMessage) => ScaffoldMessenger.of(context)
|
||||||
|
..hideCurrentSnackBar()
|
||||||
|
..showSnackBar(
|
||||||
|
SnackBar(content: Text(errorMessage ?? 'Sign In Failure')),
|
||||||
|
),
|
||||||
|
child: ...
|
||||||
|
);
|
||||||
|
```
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# 404
|
||||||
|
|
||||||
|
Oops, something's gone wrong :-(
|
||||||
|
|
||||||
|
You've tried to visit a page that doesn't exist. Luckily this site has other
|
||||||
|
[pages](index.md).
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,214 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# wyatt_authentication_bloc - Dart API docs
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
* Copyright (C) 2023 WYATT GROUP
|
||||||
|
* Please see the AUTHORS file for details.
|
||||||
|
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
<h1 id="flutter---authentication-bloc">Flutter - Authentication BLoC</h1><p align="left">
|
||||||
|
<a href="https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis"><img src="https://img.shields.io/badge/Style-Wyatt%20Analysis-blue.svg?style=flat-square" alt="Style: Wyatt Analysis"></a>
|
||||||
|
<img src="https://img.shields.io/badge/SDK-Flutter-blue?style=flat-square" alt="SDK: Flutter">
|
||||||
|
</p>
|
||||||
|
<p>Authentication Bloc for Flutter.</p>
|
||||||
|
<h2 id="features">Features</h2>
|
||||||
|
<ul>
|
||||||
|
<li>🧐 Wyatt Architecture</li>
|
||||||
|
<li>🧱 Entities
|
||||||
|
<ul>
|
||||||
|
<li>Account -> Contains account information from provider.</li>
|
||||||
|
<li>Session -> Contains account and associated data retrieved from an external source.</li>
|
||||||
|
<li>AuthenticationChangeEvent -> Describes an event in authentication change (sign in, sign up, sign out, etc...)</li>
|
||||||
|
<li>SessionWrapper -> Contains latest authentication change event and session.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>🔑 Powerful and secured authentication repository</li>
|
||||||
|
<li>🔥 Multiple data sources
|
||||||
|
<ul>
|
||||||
|
<li>Mock</li>
|
||||||
|
<li>Firebase</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>🧊 Cubits, why make it complicated when you can make it simple?
|
||||||
|
<ul>
|
||||||
|
<li>Goes to the essential.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>📐 Consistent
|
||||||
|
<ul>
|
||||||
|
<li>Every class have same naming convention</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>🧪 Tested</li>
|
||||||
|
<li>📚 Documented: <a href="./doc/api/index.md">available here</a></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="getting-started">Getting started</h2>
|
||||||
|
<p>Simply add <code>wyatt_authentication_bloc</code> in <code>pubspec.yaml</code> , then</p>
|
||||||
|
<pre class="language-dart"><code class="language-dart">import 'package:wyatt_authentication_bloc/wyatt_authentication_bloc.dart';
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="data-source">Data source</h3>
|
||||||
|
<p>The first step is to provide a data source.</p>
|
||||||
|
<pre class="language-dart"><code class="language-dart">getIt.registerLazySingleton<AuthenticationRemoteDataSource<int>>(
|
||||||
|
() => AuthenticationFirebaseDataSourceImpl<int>(
|
||||||
|
firebaseAuth: FirebaseAuth.instance,
|
||||||
|
googleSignIn:
|
||||||
|
GoogleSignIn(clientId: DefaultFirebaseOptions.ios.iosClientId)),
|
||||||
|
);
|
||||||
|
</code></pre>
|
||||||
|
<blockquote>
|
||||||
|
<p>Here we use GetIt (see example project)</p>
|
||||||
|
</blockquote>
|
||||||
|
<h3 id="repository">Repository</h3>
|
||||||
|
<p>Then you can configure your repository.</p>
|
||||||
|
<pre class="language-dart"><code class="language-dart">final AuthenticationRepository<int> authenticationRepository = AuthenticationRepositoryImpl(
|
||||||
|
authenticationRemoteDataSource:
|
||||||
|
getIt<AuthenticationRemoteDataSource<int>>(),
|
||||||
|
customPasswordValidator: const CustomPassword.pure(),
|
||||||
|
extraSignUpInputs: [
|
||||||
|
FormInput(
|
||||||
|
AuthFormField.confirmPassword,
|
||||||
|
const ConfirmedPassword.pure(),
|
||||||
|
metadata: const FormInputMetadata<void>(export: false),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
</code></pre>
|
||||||
|
<blockquote>
|
||||||
|
<p>Here we pass some extra inputs for the sign up, and a custom password validator.</p>
|
||||||
|
</blockquote>
|
||||||
|
<h3 id="cubits">Cubits</h3>
|
||||||
|
<p>It is necessary to implement each cubit. Don't panic, most of the work is already done 😊 you just have to customize the logic of these.</p>
|
||||||
|
<p>In each of these cubits it is necessary to overload the various callbacks.</p>
|
||||||
|
<blockquote>
|
||||||
|
<p>Here the associated data <code>Data</code> is a <code>int</code></p>
|
||||||
|
</blockquote>
|
||||||
|
<h4 id="authentication">Authentication</h4>
|
||||||
|
<p>In the authentication are managed, the refresh, the deletion of account or the disconnection.</p>
|
||||||
|
<pre class="language-dart"><code class="language-dart">class ExampleAuthenticationCubit extends AuthenticationCubit<int> {
|
||||||
|
ExampleAuthenticationCubit({required super.authenticationRepository});
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onReauthenticate(Result<Account, AppException> result) async {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onRefresh(Result<Account, AppException> result) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignInFromCache(SessionWrapper<int> wrapper) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<void> onSignOut() {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<void> onDelete() {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
<h4 id="sign-up">Sign Up</h4>
|
||||||
|
<pre class="language-dart"><code class="language-dart">class ExampleSignUpCubit extends SignUpCubit<int> {
|
||||||
|
ExampleSignUpCubit({
|
||||||
|
required super.authenticationRepository,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignUpWithEmailAndPassword(Result<Account, AppException> result, WyattForm form) async {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</code></pre>
|
||||||
|
<h4 id="sign-in">Sign In</h4>
|
||||||
|
<pre class="language-dart"><code class="language-dart">class ExampleSignInCubit extends SignInCubit<int> {
|
||||||
|
ExampleSignInCubit({
|
||||||
|
required super.authenticationRepository,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignInWithEmailAndPassword(Result<Account, AppException> result, WyattForm form) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignInAnonymously(Result<Account, AppException> result, WyattForm form) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
FutureOrResult<int?> onSignInWithGoogle(Result<Account, AppException> result, WyattForm form) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
<p>After setting up all these cubits you can provide them in the application. And that's it!</p>
|
||||||
|
<pre class="language-dart"><code class="language-dart">BlocProvider<SignUpCubit<int>>(
|
||||||
|
create: (_) => ExampleSignUpCubit(
|
||||||
|
authenticationRepository: authenticationRepository,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
BlocProvider<SignInCubit<int>>(
|
||||||
|
create: (_) => ExampleSignInCubit(
|
||||||
|
authenticationRepository: authenticationRepository,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="widgets">Widgets</h3>
|
||||||
|
<p>Widgets are provided to make your life easier. Starting with the <code>AuthenticationBuilder</code> which allows you to build according to the authentication state.</p>
|
||||||
|
<pre class="language-dart"><code class="language-dart">AuthenticationBuilder<int>(
|
||||||
|
authenticated: (context, sessionWrapper) => Text(
|
||||||
|
'Logged as ${sessionWrapper.session?.account.email} | GeneratedId is ${sessionWrapper.session?.data}'),
|
||||||
|
unauthenticated: (context) =>
|
||||||
|
const Text('Not logged (unauthenticated)'),
|
||||||
|
unknown: (context) => const Text('Not logged (unknown)'),
|
||||||
|
),
|
||||||
|
</code></pre>
|
||||||
|
<p>A <code>BuildContext</code> extension is also available to access certain attributes more quickly.</p>
|
||||||
|
<pre class="language-dart"><code class="language-dart">Text('Home | ${context.account<AuthenticationCubit<int>, int>()?.email}'),
|
||||||
|
</code></pre>
|
||||||
|
<p>Listeners are used to listen to the status of the sign in and sign up forms.</p>
|
||||||
|
<pre class="language-dart"><code class="language-dart">return SignInListener<int>(
|
||||||
|
onError: (context, status, errorMessage) => ScaffoldMessenger.of(context)
|
||||||
|
..hideCurrentSnackBar()
|
||||||
|
..showSnackBar(
|
||||||
|
SnackBar(content: Text(errorMessage ?? 'Sign In Failure')),
|
||||||
|
),
|
||||||
|
child: ...
|
||||||
|
);
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
|
||||||
|
## Libraries
|
||||||
|
|
||||||
|
##### [wyatt_authentication_bloc](wyatt_authentication_bloc/wyatt_authentication_bloc-library.md)
|
||||||
|
An authentication library for BLoC.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# 404
|
||||||
|
|
||||||
|
Oops, something's gone wrong :-(
|
||||||
|
|
||||||
|
You've tried to visit a page that doesn't exist. Luckily this site has other
|
||||||
|
[pages](index.md).
|
||||||
+237
@@ -0,0 +1,237 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Account class
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Represents a user <a href="../wyatt_authentication_bloc/Account-class.md">Account</a> in the
|
||||||
|
various identity provisioning systems.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Inheritance**
|
||||||
|
|
||||||
|
- [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)
|
||||||
|
- [Equatable](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable-class.html)
|
||||||
|
- Account
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Implementers**
|
||||||
|
|
||||||
|
- [AccountModel](../wyatt_authentication_bloc/AccountModel-class.md)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constructors
|
||||||
|
|
||||||
|
[Account](../wyatt_authentication_bloc/Account/Account.md) ({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) id, required [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) isAnonymous, required [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) emailVerified, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) providerId, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? email, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? phoneNumber, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? photoURL, [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? creationTime, [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? lastSignInTime, [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)? isNewUser, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? refreshToken})
|
||||||
|
|
||||||
|
_const_
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
##### [accessToken](../wyatt_authentication_bloc/Account/accessToken.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The user access token
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [creationTime](../wyatt_authentication_bloc/Account/creationTime.md) → [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns the users account creation time.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [email](../wyatt_authentication_bloc/Account/email.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The users email address.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [emailVerified](../wyatt_authentication_bloc/Account/emailVerified.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns whether the users email address has been verified.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [hashCode](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The hash code for this object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [id](../wyatt_authentication_bloc/Account/id.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The user's unique ID.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [isAnonymous](../wyatt_authentication_bloc/Account/isAnonymous.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns whether the user is a anonymous.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [isNewUser](../wyatt_authentication_bloc/Account/isNewUser.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Whether the user account has been recently created.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [lastSignInTime](../wyatt_authentication_bloc/Account/lastSignInTime.md) → [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
When the user last signed in as dictated by the server clock.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [phoneNumber](../wyatt_authentication_bloc/Account/phoneNumber.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns the users phone number.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [photoURL](../wyatt_authentication_bloc/Account/photoURL.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns a photo URL for the user.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [props](../wyatt_authentication_bloc/Account/props.md) → [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The list of properties that will be used to determine whether
|
||||||
|
two instances are equal.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [providerId](../wyatt_authentication_bloc/Account/providerId.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The provider ID for the user.
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [refreshToken](../wyatt_authentication_bloc/Account/refreshToken.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The user refresh token
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A representation of the runtime type of the object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [stringify](../wyatt_authentication_bloc/Account/stringify.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output
|
||||||
|
this instance's <a href="../wyatt_authentication_bloc/Account/props.md">props</a>.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Invoked when a non-existent method or property is accessed.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toString](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A string representation of this object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Operators
|
||||||
|
|
||||||
|
##### [operator ==](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The equality operator.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Account constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
Account({required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) id, required [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) isAnonymous, required [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) emailVerified, required [String](https://api.flutter.dev/flutter/dart-core/String-class.html) providerId, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? email, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? phoneNumber, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? photoURL, [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? creationTime, [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? lastSignInTime, [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)? isNewUser, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? refreshToken})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
const Account({
|
||||||
|
required this.id,
|
||||||
|
required this.isAnonymous,
|
||||||
|
required this.emailVerified,
|
||||||
|
required this.providerId,
|
||||||
|
this.email,
|
||||||
|
this.phoneNumber,
|
||||||
|
this.photoURL,
|
||||||
|
this.creationTime,
|
||||||
|
this.lastSignInTime,
|
||||||
|
this.isNewUser,
|
||||||
|
this.accessToken,
|
||||||
|
this.refreshToken,
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# accessToken property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>The user access token</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final String? accessToken;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# creationTime property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? creationTime
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Returns the users account creation time.</p>
|
||||||
|
<p>When this account was created as dictated by the server clock.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final DateTime? creationTime;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# email property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? email
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>The users email address.</p>
|
||||||
|
<p>Will be <code>null</code> if signing in anonymously.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final String? email;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# emailVerified property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) emailVerified
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Returns whether the users email address has been verified.</p>
|
||||||
|
<p>To send a verification email, see <code>SendEmailVerification</code>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final bool emailVerified;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# id property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html) id
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>The user's unique ID.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final String id;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# isAnonymous property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) isAnonymous
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Returns whether the user is a anonymous.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final bool isAnonymous;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# isNewUser property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)? isNewUser
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Whether the user account has been recently created.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final bool? isNewUser;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# lastSignInTime property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)? lastSignInTime
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>When the user last signed in as dictated by the server clock.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final DateTime? lastSignInTime;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# phoneNumber property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? phoneNumber
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Returns the users phone number.</p>
|
||||||
|
<p>This property will be <code>null</code> if the user has not signed in or been has
|
||||||
|
their phone number linked.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final String? phoneNumber;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# photoURL property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? photoURL
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Returns a photo URL for the user.</p>
|
||||||
|
<p>This property will be populated if the user has signed in or been linked
|
||||||
|
with a 3rd party OAuth provider (such as Google).</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final String? photoURL;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# props property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Annotations**
|
||||||
|
|
||||||
|
- @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html)
|
||||||
|
[List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?> props
|
||||||
|
|
||||||
|
_<span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>The list of properties that will be used to determine whether
|
||||||
|
two instances are equal.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [
|
||||||
|
id,
|
||||||
|
isAnonymous,
|
||||||
|
email,
|
||||||
|
emailVerified,
|
||||||
|
phoneNumber,
|
||||||
|
photoURL,
|
||||||
|
creationTime,
|
||||||
|
lastSignInTime,
|
||||||
|
providerId,
|
||||||
|
isNewUser,
|
||||||
|
accessToken,
|
||||||
|
refreshToken,
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# providerId property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html) providerId
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>The provider ID for the user.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final String providerId;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# refreshToken property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? refreshToken
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>The user refresh token</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final String? refreshToken;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# stringify property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Annotations**
|
||||||
|
|
||||||
|
- @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html)
|
||||||
|
[bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) stringify
|
||||||
|
|
||||||
|
_<span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output
|
||||||
|
this instance's <a href="../../wyatt_authentication_bloc/Account/props.md">props</a>.</p>
|
||||||
|
<p>A global default value for <a href="../../wyatt_authentication_bloc/Account/stringify.md">stringify</a> can be set using
|
||||||
|
<code>EquatableConfig.stringify</code>.</p>
|
||||||
|
<p>If this instance's <a href="../../wyatt_authentication_bloc/Account/stringify.md">stringify</a> is set to null, the value of
|
||||||
|
<code>EquatableConfig.stringify</code> will be used instead. This defaults to
|
||||||
|
<code>false</code>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
@override
|
||||||
|
bool get stringify => true;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+247
@@ -0,0 +1,247 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AccountModel class
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Account Model to parse Firebase User data</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Inheritance**
|
||||||
|
|
||||||
|
- [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)
|
||||||
|
- [Equatable](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable-class.html)
|
||||||
|
- [Account](../wyatt_authentication_bloc/Account-class.md)
|
||||||
|
- AccountModel
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constructors
|
||||||
|
|
||||||
|
[AccountModel.fromFirebaseUser](../wyatt_authentication_bloc/AccountModel/AccountModel.fromFirebaseUser.md) ([User](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/User-class.html)? user, {[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken})
|
||||||
|
|
||||||
|
_factory_
|
||||||
|
|
||||||
|
[AccountModel.fromFirebaseUserCredential](../wyatt_authentication_bloc/AccountModel/AccountModel.fromFirebaseUserCredential.md) ([UserCredential](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/UserCredential-class.html)? userCredential)
|
||||||
|
|
||||||
|
_factory_
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
##### [accessToken](../wyatt_authentication_bloc/Account/accessToken.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The user access token
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [creationTime](../wyatt_authentication_bloc/Account/creationTime.md) → [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns the users account creation time.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [email](../wyatt_authentication_bloc/Account/email.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The users email address.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [emailVerified](../wyatt_authentication_bloc/Account/emailVerified.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns whether the users email address has been verified.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [hashCode](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The hash code for this object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [id](../wyatt_authentication_bloc/Account/id.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The user's unique ID.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [isAnonymous](../wyatt_authentication_bloc/Account/isAnonymous.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns whether the user is a anonymous.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [isNewUser](../wyatt_authentication_bloc/Account/isNewUser.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Whether the user account has been recently created.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [lastSignInTime](../wyatt_authentication_bloc/Account/lastSignInTime.md) → [DateTime](https://api.flutter.dev/flutter/dart-core/DateTime-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
When the user last signed in as dictated by the server clock.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [phoneNumber](../wyatt_authentication_bloc/Account/phoneNumber.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns the users phone number.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [photoURL](../wyatt_authentication_bloc/Account/photoURL.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns a photo URL for the user.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [props](../wyatt_authentication_bloc/Account/props.md) → [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The list of properties that will be used to determine whether
|
||||||
|
two instances are equal.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [providerId](../wyatt_authentication_bloc/Account/providerId.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The provider ID for the user.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [refreshToken](../wyatt_authentication_bloc/AccountModel/refreshToken.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The user refresh token
|
||||||
|
_<span class="feature">read-only</span><span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A representation of the runtime type of the object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [stringify](../wyatt_authentication_bloc/Account/stringify.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output
|
||||||
|
this instance's <a href="../wyatt_authentication_bloc/Account/props.md">props</a>.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [user](../wyatt_authentication_bloc/AccountModel/user.md) → [User](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/User-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Invoked when a non-existent method or property is accessed.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toString](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A string representation of this object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Operators
|
||||||
|
|
||||||
|
##### [operator ==](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The equality operator.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+51
@@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AccountModel.fromFirebaseUser constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AccountModel.fromFirebaseUser([User](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/User-class.html)? user, {[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? accessToken})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
factory AccountModel.fromFirebaseUser(User? user, {String? accessToken}) {
|
||||||
|
if (user != null) {
|
||||||
|
final providerId =
|
||||||
|
(user.providerData.isEmpty) ? '' : user.providerData.first.providerId;
|
||||||
|
return AccountModel._(
|
||||||
|
user: user,
|
||||||
|
id: user.uid,
|
||||||
|
emailVerified: user.emailVerified,
|
||||||
|
isAnonymous: user.isAnonymous,
|
||||||
|
providerId: providerId,
|
||||||
|
creationTime: user.metadata.creationTime,
|
||||||
|
lastSignInTime: user.metadata.lastSignInTime,
|
||||||
|
isNewUser: false,
|
||||||
|
email: user.email,
|
||||||
|
phoneNumber: user.phoneNumber,
|
||||||
|
photoURL: user.photoURL,
|
||||||
|
accessToken: accessToken,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
throw ModelParsingFailureFirebase('null-user', 'User cannot be null');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AccountModel.fromFirebaseUserCredential constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AccountModel.fromFirebaseUserCredential([UserCredential](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/UserCredential-class.html)? userCredential)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
factory AccountModel.fromFirebaseUserCredential(
|
||||||
|
UserCredential? userCredential,
|
||||||
|
) {
|
||||||
|
final user = userCredential?.user;
|
||||||
|
if (user != null) {
|
||||||
|
final providerId =
|
||||||
|
(user.providerData.isEmpty) ? '' : user.providerData.first.providerId;
|
||||||
|
return AccountModel._(
|
||||||
|
user: user,
|
||||||
|
id: user.uid,
|
||||||
|
emailVerified: user.emailVerified,
|
||||||
|
isAnonymous: user.isAnonymous,
|
||||||
|
providerId: providerId,
|
||||||
|
creationTime: user.metadata.creationTime,
|
||||||
|
lastSignInTime: user.metadata.lastSignInTime,
|
||||||
|
isNewUser: userCredential?.additionalUserInfo?.isNewUser,
|
||||||
|
email: user.email,
|
||||||
|
phoneNumber: user.phoneNumber,
|
||||||
|
photoURL: user.photoURL,
|
||||||
|
accessToken: userCredential?.credential?.accessToken,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
throw ModelParsingFailureFirebase('null-user', 'User cannot be null');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# refreshToken property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Annotations**
|
||||||
|
|
||||||
|
- @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html)
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? refreshToken
|
||||||
|
|
||||||
|
_<span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>The user refresh token</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
@override
|
||||||
|
String? get refreshToken => user?.refreshToken;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# user property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[User](https://pub.dev/documentation/firebase_auth/4.2.0/firebase_auth/User-class.html)? user
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final User? user;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+137
@@ -0,0 +1,137 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ApplyActionCodeFailureFirebase class
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Thrown if during the apply action code process if a failure occurs.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Inheritance**
|
||||||
|
|
||||||
|
- [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)
|
||||||
|
- [AuthenticationFailureInterface](../wyatt_authentication_bloc/AuthenticationFailureInterface-class.md)
|
||||||
|
- [ApplyActionCodeFailureInterface](../wyatt_authentication_bloc/ApplyActionCodeFailureInterface-class.md)
|
||||||
|
- ApplyActionCodeFailureFirebase
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constructors
|
||||||
|
|
||||||
|
[ApplyActionCodeFailureFirebase](../wyatt_authentication_bloc/ApplyActionCodeFailureFirebase/ApplyActionCodeFailureFirebase.md) ([[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? msg])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[ApplyActionCodeFailureFirebase.fromCode](../wyatt_authentication_bloc/ApplyActionCodeFailureFirebase/ApplyActionCodeFailureFirebase.fromCode.md) ([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
##### [code](../wyatt_authentication_bloc/AuthenticationFailureInterface/code.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">read / write</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The hash code for this object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [message](../wyatt_authentication_bloc/AuthenticationFailureInterface/message.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [msg](../wyatt_authentication_bloc/AuthenticationFailureInterface/msg.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">read / write</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A representation of the runtime type of the object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Invoked when a non-existent method or property is accessed.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toString](../wyatt_authentication_bloc/AuthenticationFailureInterface/toString.md)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A string representation of this object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Operators
|
||||||
|
|
||||||
|
##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The equality operator.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ApplyActionCodeFailureFirebase.fromCode constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ApplyActionCodeFailureFirebase.fromCode([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
ApplyActionCodeFailureFirebase.fromCode(String code) : super.fromCode(code) {
|
||||||
|
switch (code) {
|
||||||
|
case 'expired-action-code':
|
||||||
|
msg = 'Action code has expired.';
|
||||||
|
break;
|
||||||
|
case 'invalid-action-code':
|
||||||
|
msg = 'Action code is invalid.';
|
||||||
|
break;
|
||||||
|
case 'user-disabled':
|
||||||
|
msg = 'This user has been disabled. Please contact support for help.';
|
||||||
|
break;
|
||||||
|
case 'user-not-found':
|
||||||
|
msg = 'Email is not found, please create an account.';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
this.code = 'unknown';
|
||||||
|
msg = 'An unknown error occurred.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ApplyActionCodeFailureFirebase constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ApplyActionCodeFailureFirebase([[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? msg])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
ApplyActionCodeFailureFirebase([String? code, String? msg])
|
||||||
|
: super(code ?? 'unknown', msg ?? 'An unknown error occurred.');
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+139
@@ -0,0 +1,139 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ApplyActionCodeFailureInterface class
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Thrown if during the apply action code process if a failure occurs.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Inheritance**
|
||||||
|
|
||||||
|
- [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)
|
||||||
|
- [AuthenticationFailureInterface](../wyatt_authentication_bloc/AuthenticationFailureInterface-class.md)
|
||||||
|
- ApplyActionCodeFailureInterface
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Implementers**
|
||||||
|
|
||||||
|
- [ApplyActionCodeFailureFirebase](../wyatt_authentication_bloc/ApplyActionCodeFailureFirebase-class.md)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constructors
|
||||||
|
|
||||||
|
[ApplyActionCodeFailureInterface](../wyatt_authentication_bloc/ApplyActionCodeFailureInterface/ApplyActionCodeFailureInterface.md) ([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html) msg)
|
||||||
|
|
||||||
|
Thrown if during the apply action code process if a failure occurs.
|
||||||
|
|
||||||
|
[ApplyActionCodeFailureInterface.fromCode](../wyatt_authentication_bloc/ApplyActionCodeFailureInterface/ApplyActionCodeFailureInterface.fromCode.md) ([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code)
|
||||||
|
|
||||||
|
Thrown if during the apply action code process if a failure occurs.
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
##### [code](../wyatt_authentication_bloc/AuthenticationFailureInterface/code.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">read / write</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The hash code for this object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [message](../wyatt_authentication_bloc/AuthenticationFailureInterface/message.md) → [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [msg](../wyatt_authentication_bloc/AuthenticationFailureInterface/msg.md) ↔ [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">read / write</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A representation of the runtime type of the object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Invoked when a non-existent method or property is accessed.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toString](../wyatt_authentication_bloc/AuthenticationFailureInterface/toString.md)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A string representation of this object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Operators
|
||||||
|
|
||||||
|
##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The equality operator.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ApplyActionCodeFailureInterface.fromCode constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ApplyActionCodeFailureInterface.fromCode([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code)
|
||||||
|
|
||||||
|
|
||||||
|
<p>Thrown if during the apply action code process if a failure occurs.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
ApplyActionCodeFailureInterface.fromCode(super.code) : super.fromCode();
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ApplyActionCodeFailureInterface constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ApplyActionCodeFailureInterface([String](https://api.flutter.dev/flutter/dart-core/String-class.html) code, [String](https://api.flutter.dev/flutter/dart-core/String-class.html) msg)
|
||||||
|
|
||||||
|
|
||||||
|
<p>Thrown if during the apply action code process if a failure occurs.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
ApplyActionCodeFailureInterface(super.code, super.msg);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+122
@@ -0,0 +1,122 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthFormField class
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Default authentication form fields name</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constructors
|
||||||
|
|
||||||
|
[AuthFormField](../wyatt_authentication_bloc/AuthFormField/AuthFormField.md) ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The hash code for this object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A representation of the runtime type of the object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Invoked when a non-existent method or property is accessed.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toString](https://api.flutter.dev/flutter/dart-core/Object/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A string representation of this object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Operators
|
||||||
|
|
||||||
|
##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The equality operator.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constants
|
||||||
|
|
||||||
|
##### [confirmPassword](../wyatt_authentication_bloc/AuthFormField/confirmPassword-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Confirm Password field: <code>wyattConfirmPasswordField</code>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [email](../wyatt_authentication_bloc/AuthFormField/email-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Email field: <code>wyattEmailField</code>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [password](../wyatt_authentication_bloc/AuthFormField/password-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Password field: <code>wyattPasswordField</code>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthFormField constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AuthFormField()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# confirmPassword constant
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html) const confirmPassword
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Confirm Password field: <code>wyattConfirmPasswordField</code></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
static const confirmPassword = 'wyattConfirmPasswordField';
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# email constant
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html) const email
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Email field: <code>wyattEmailField</code></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
static const email = 'wyattEmailField';
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# password constant
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html) const password
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Password field: <code>wyattPasswordField</code></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
static const password = 'wyattPasswordField';
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+131
@@ -0,0 +1,131 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthFormName class
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Default authentication form name</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constructors
|
||||||
|
|
||||||
|
[AuthFormName](../wyatt_authentication_bloc/AuthFormName/AuthFormName.md) ()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The hash code for this object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A representation of the runtime type of the object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Invoked when a non-existent method or property is accessed.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toString](https://api.flutter.dev/flutter/dart-core/Object/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A string representation of this object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Operators
|
||||||
|
|
||||||
|
##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The equality operator.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constants
|
||||||
|
|
||||||
|
##### [editAccountForm](../wyatt_authentication_bloc/AuthFormName/editAccountForm-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Edit account form: <code>wyattEditAccountForm</code>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [passwordResetForm](../wyatt_authentication_bloc/AuthFormName/passwordResetForm-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Password reset form: <code>wyattPasswordResetForm</code>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [signInForm](../wyatt_authentication_bloc/AuthFormName/signInForm-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Sign In form: <code>wyattSignInForm</code>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [signUpForm](../wyatt_authentication_bloc/AuthFormName/signUpForm-constant.md) const [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Sign Up form: <code>wyattSignUpForm</code>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthFormName constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AuthFormName()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# editAccountForm constant
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html) const editAccountForm
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Edit account form: <code>wyattEditAccountForm</code></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
static const String editAccountForm = 'wyattEditAccountForm';
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# passwordResetForm constant
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html) const passwordResetForm
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Password reset form: <code>wyattPasswordResetForm</code></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
static const String passwordResetForm = 'wyattPasswordResetForm';
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# signInForm constant
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html) const signInForm
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Sign In form: <code>wyattSignInForm</code></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
static const String signInForm = 'wyattSignInForm';
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# signUpForm constant
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[String](https://api.flutter.dev/flutter/dart-core/String-class.html) const signUpForm
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Sign Up form: <code>wyattSignUpForm</code></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
static const String signUpForm = 'wyattSignUpForm';
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+216
@@ -0,0 +1,216 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthenticationBuilder<Data> class
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Inheritance**
|
||||||
|
|
||||||
|
- [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)
|
||||||
|
- [DiagnosticableTree](https://api.flutter.dev/flutter/foundation/DiagnosticableTree-class.html)
|
||||||
|
- [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html)
|
||||||
|
- [StatelessWidget](https://api.flutter.dev/flutter/widgets/StatelessWidget-class.html)
|
||||||
|
- AuthenticationBuilder
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constructors
|
||||||
|
|
||||||
|
[AuthenticationBuilder](../wyatt_authentication_bloc/AuthenticationBuilder/AuthenticationBuilder.md) ({required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) authenticated([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context, [SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> sessionWrapper), required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) unauthenticated([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context), required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) unknown([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context), [Key](https://api.flutter.dev/flutter/foundation/Key-class.html)? key})
|
||||||
|
|
||||||
|
_const_
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
##### [authenticated](../wyatt_authentication_bloc/AuthenticationBuilder/authenticated.md) → [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context, [SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> sessionWrapper)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [hashCode](https://api.flutter.dev/flutter/widgets/Widget/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The hash code for this object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [key](https://api.flutter.dev/flutter/widgets/Widget/key.html) → [Key](https://api.flutter.dev/flutter/foundation/Key-class.html)?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Controls how one widget replaces another widget in the tree.
|
||||||
|
_<span class="feature">final</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A representation of the runtime type of the object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [unauthenticated](../wyatt_authentication_bloc/AuthenticationBuilder/unauthenticated.md) → [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [unknown](../wyatt_authentication_bloc/AuthenticationBuilder/unknown.md) → [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
##### [build](../wyatt_authentication_bloc/AuthenticationBuilder/build.md)([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context) [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Describes the part of the user interface represented by this widget.
|
||||||
|
_<span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [createElement](https://api.flutter.dev/flutter/widgets/StatelessWidget/createElement.html)() [StatelessElement](https://api.flutter.dev/flutter/widgets/StatelessElement-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Creates a <a href="https://api.flutter.dev/flutter/widgets/StatelessElement-class.html">StatelessElement</a> to manage this widget's location in the tree.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [debugDescribeChildren](https://api.flutter.dev/flutter/foundation/DiagnosticableTree/debugDescribeChildren.html)() [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[DiagnosticsNode](https://api.flutter.dev/flutter/foundation/DiagnosticsNode-class.html)>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns a list of <code>DiagnosticsNode</code> objects describing this node's
|
||||||
|
children.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [debugFillProperties](https://api.flutter.dev/flutter/widgets/Widget/debugFillProperties.html)([DiagnosticPropertiesBuilder](https://api.flutter.dev/flutter/foundation/DiagnosticPropertiesBuilder-class.html) properties) void
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Add additional properties associated with the node.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Invoked when a non-existent method or property is accessed.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toDiagnosticsNode](https://api.flutter.dev/flutter/foundation/DiagnosticableTree/toDiagnosticsNode.html)({[String](https://api.flutter.dev/flutter/dart-core/String-class.html)? name, [DiagnosticsTreeStyle](https://api.flutter.dev/flutter/foundation/DiagnosticsTreeStyle.html)? style}) [DiagnosticsNode](https://api.flutter.dev/flutter/foundation/DiagnosticsNode-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns a debug representation of the object that is used by debugging
|
||||||
|
tools and by <a href="https://api.flutter.dev/flutter/foundation/DiagnosticsNode/toStringDeep.html">DiagnosticsNode.toStringDeep</a>.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toString](https://api.flutter.dev/flutter/foundation/Diagnosticable/toString.html)({[DiagnosticLevel](https://api.flutter.dev/flutter/foundation/DiagnosticLevel.html) minLevel = DiagnosticLevel.info}) [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A string representation of this object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toStringDeep](https://api.flutter.dev/flutter/foundation/DiagnosticableTree/toStringDeep.html)({[String](https://api.flutter.dev/flutter/dart-core/String-class.html) prefixLineOne = '', [String](https://api.flutter.dev/flutter/dart-core/String-class.html)? prefixOtherLines, [DiagnosticLevel](https://api.flutter.dev/flutter/foundation/DiagnosticLevel.html) minLevel = DiagnosticLevel.debug}) [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns a string representation of this node and its descendants.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toStringShallow](https://api.flutter.dev/flutter/foundation/DiagnosticableTree/toStringShallow.html)({[String](https://api.flutter.dev/flutter/dart-core/String-class.html) joiner = ', ', [DiagnosticLevel](https://api.flutter.dev/flutter/foundation/DiagnosticLevel.html) minLevel = DiagnosticLevel.debug}) [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns a one-line detailed description of the object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toStringShort](https://api.flutter.dev/flutter/widgets/Widget/toStringShort.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A short, textual description of this widget.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Operators
|
||||||
|
|
||||||
|
##### [operator ==](https://api.flutter.dev/flutter/widgets/Widget/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The equality operator.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthenticationBuilder<Data> constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
AuthenticationBuilder<Data>({required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) authenticated([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context, [SessionWrapper](../../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> sessionWrapper), required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) unauthenticated([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context), required [Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) unknown([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context), [Key](https://api.flutter.dev/flutter/foundation/Key-class.html)? key})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
const AuthenticationBuilder({
|
||||||
|
required this.authenticated,
|
||||||
|
required this.unauthenticated,
|
||||||
|
required this.unknown,
|
||||||
|
super.key,
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# authenticated property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context, [SessionWrapper](../../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> sessionWrapper) authenticated
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final Widget Function(
|
||||||
|
BuildContext context,
|
||||||
|
SessionWrapper<Data> sessionWrapper,
|
||||||
|
) authenticated;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+85
@@ -0,0 +1,85 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# build method
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html)
|
||||||
|
|
||||||
|
[Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) build
|
||||||
|
([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context)
|
||||||
|
|
||||||
|
_<span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Describes the part of the user interface represented by this widget.</p>
|
||||||
|
<p>The framework calls this method when this widget is inserted into the tree
|
||||||
|
in a given <a href="https://api.flutter.dev/flutter/widgets/BuildContext-class.html">BuildContext</a> and when the dependencies of this widget change
|
||||||
|
(e.g., an <a href="https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html">InheritedWidget</a> referenced by this widget changes). This
|
||||||
|
method can potentially be called in every frame and should not have any side
|
||||||
|
effects beyond building a widget.</p>
|
||||||
|
<p>The framework replaces the subtree below this widget with the widget
|
||||||
|
returned by this method, either by updating the existing subtree or by
|
||||||
|
removing the subtree and inflating a new subtree, depending on whether the
|
||||||
|
widget returned by this method can update the root of the existing
|
||||||
|
subtree, as determined by calling <a href="https://api.flutter.dev/flutter/widgets/Widget/canUpdate.html">Widget.canUpdate</a>.</p>
|
||||||
|
<p>Typically implementations return a newly created constellation of widgets
|
||||||
|
that are configured with information from this widget's constructor and
|
||||||
|
from the given <a href="https://api.flutter.dev/flutter/widgets/BuildContext-class.html">BuildContext</a>.</p>
|
||||||
|
<p>The given <a href="https://api.flutter.dev/flutter/widgets/BuildContext-class.html">BuildContext</a> contains information about the location in the
|
||||||
|
tree at which this widget is being built. For example, the context
|
||||||
|
provides the set of inherited widgets for this location in the tree. A
|
||||||
|
given widget might be built with multiple different <a href="https://api.flutter.dev/flutter/widgets/BuildContext-class.html">BuildContext</a>
|
||||||
|
arguments over time if the widget is moved around the tree or if the
|
||||||
|
widget is inserted into the tree in multiple places at once.</p>
|
||||||
|
<p>The implementation of this method must only depend on:</p>
|
||||||
|
<ul>
|
||||||
|
<li>the fields of the widget, which themselves must not change over time,
|
||||||
|
and</li>
|
||||||
|
<li>any ambient state obtained from the <code>context</code> using
|
||||||
|
<a href="https://api.flutter.dev/flutter/widgets/BuildContext/dependOnInheritedWidgetOfExactType.html">BuildContext.dependOnInheritedWidgetOfExactType</a>.</li>
|
||||||
|
</ul>
|
||||||
|
<p>If a widget's <a href="../../wyatt_authentication_bloc/AuthenticationBuilder/build.md">build</a> method is to depend on anything else, use a
|
||||||
|
<a href="https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html">StatefulWidget</a> instead.</p>
|
||||||
|
<p>See also:</p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://api.flutter.dev/flutter/widgets/StatelessWidget-class.html">StatelessWidget</a>, which contains the discussion on performance considerations.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) =>
|
||||||
|
BlocBuilder<AuthenticationCubit<Data>, AuthenticationState<Data>>(
|
||||||
|
builder: (context, state) {
|
||||||
|
if (state.status == AuthenticationStatus.authenticated) {
|
||||||
|
if (state.wrapper != null) {
|
||||||
|
return authenticated(context, state.wrapper!);
|
||||||
|
} else {
|
||||||
|
return unauthenticated(context);
|
||||||
|
}
|
||||||
|
} else if (state.status == AuthenticationStatus.unauthenticated) {
|
||||||
|
return unauthenticated(context);
|
||||||
|
} else {
|
||||||
|
return unknown(context);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# unauthenticated property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context) unauthenticated
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final Widget Function(BuildContext context) unauthenticated;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# unknown property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Widget](https://api.flutter.dev/flutter/widgets/Widget-class.html) Function([BuildContext](https://api.flutter.dev/flutter/widgets/BuildContext-class.html) context) unknown
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
final Widget Function(BuildContext context) unknown;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+137
@@ -0,0 +1,137 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthenticationChangeEvent class
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Represents an event initiated by a change in
|
||||||
|
the user's authentication status.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Inheritance**
|
||||||
|
|
||||||
|
- [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)
|
||||||
|
- [Equatable](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable-class.html)
|
||||||
|
- AuthenticationChangeEvent
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Implementers**
|
||||||
|
|
||||||
|
- [DeletedEvent](../wyatt_authentication_bloc/DeletedEvent-class.md)
|
||||||
|
- [ReauthenticatedEvent](../wyatt_authentication_bloc/ReauthenticatedEvent-class.md)
|
||||||
|
- [RefreshedEvent](../wyatt_authentication_bloc/RefreshedEvent-class.md)
|
||||||
|
- [SignedInEvent](../wyatt_authentication_bloc/SignedInEvent-class.md)
|
||||||
|
- [SignedInFromCacheEvent](../wyatt_authentication_bloc/SignedInFromCacheEvent-class.md)
|
||||||
|
- [SignedOutEvent](../wyatt_authentication_bloc/SignedOutEvent-class.md)
|
||||||
|
- [SignedUpEvent](../wyatt_authentication_bloc/SignedUpEvent-class.md)
|
||||||
|
- [UnknownAuthenticationEvent](../wyatt_authentication_bloc/UnknownAuthenticationEvent-class.md)
|
||||||
|
- [UpdatedEvent](../wyatt_authentication_bloc/UpdatedEvent-class.md)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constructors
|
||||||
|
|
||||||
|
[AuthenticationChangeEvent](../wyatt_authentication_bloc/AuthenticationChangeEvent/AuthenticationChangeEvent.md) ()
|
||||||
|
|
||||||
|
_const_
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
##### [hashCode](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The hash code for this object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [props](../wyatt_authentication_bloc/AuthenticationChangeEvent/props.md) → [List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The list of properties that will be used to determine whether
|
||||||
|
two instances are equal.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A representation of the runtime type of the object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [stringify](../wyatt_authentication_bloc/AuthenticationChangeEvent/stringify.md) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output
|
||||||
|
this instance's <a href="../wyatt_authentication_bloc/AuthenticationChangeEvent/props.md">props</a>.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Invoked when a non-existent method or property is accessed.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toString](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A string representation of this object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Operators
|
||||||
|
|
||||||
|
##### [operator ==](https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The equality operator.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthenticationChangeEvent constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
const
|
||||||
|
AuthenticationChangeEvent()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
const AuthenticationChangeEvent();
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# props property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Annotations**
|
||||||
|
|
||||||
|
- @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html)
|
||||||
|
[List](https://api.flutter.dev/flutter/dart-core/List-class.html)<[Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)?> props
|
||||||
|
|
||||||
|
_<span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>The list of properties that will be used to determine whether
|
||||||
|
two instances are equal.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [];
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# stringify property
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Annotations**
|
||||||
|
|
||||||
|
- @[override](https://api.flutter.dev/flutter/dart-core/override-constant.html)
|
||||||
|
[bool](https://api.flutter.dev/flutter/dart-core/bool-class.html) stringify
|
||||||
|
|
||||||
|
_<span class="feature">override</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>If set to <code>true</code>, the <a href="https://pub.dev/documentation/equatable/2.0.5/equatable/Equatable/toString.html">toString</a> method will be overridden to output
|
||||||
|
this instance's <a href="../../wyatt_authentication_bloc/AuthenticationChangeEvent/props.md">props</a>.</p>
|
||||||
|
<p>A global default value for <a href="../../wyatt_authentication_bloc/AuthenticationChangeEvent/stringify.md">stringify</a> can be set using
|
||||||
|
<code>EquatableConfig.stringify</code>.</p>
|
||||||
|
<p>If this instance's <a href="../../wyatt_authentication_bloc/AuthenticationChangeEvent/stringify.md">stringify</a> is set to null, the value of
|
||||||
|
<code>EquatableConfig.stringify</code> will be used instead. This defaults to
|
||||||
|
<code>false</code>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
@override
|
||||||
|
bool get stringify => true;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+292
@@ -0,0 +1,292 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthenticationCubit<Data> class
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Abstract authentication cubit class needs to be implemented in application.</p>
|
||||||
|
<p>This cubit is in charge of managing the global authentication state of
|
||||||
|
the application.</p>
|
||||||
|
<p>Its here you can override every callbacks and add your custom logic.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Inheritance**
|
||||||
|
|
||||||
|
- [Object](https://api.flutter.dev/flutter/dart-core/Object-class.html)
|
||||||
|
- [BlocBase](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase-class.html)<[AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data>>
|
||||||
|
- [Cubit](https://pub.dev/documentation/bloc/8.1.0/bloc/Cubit-class.html)<[AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data>>
|
||||||
|
- AuthenticationCubit
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Constructors
|
||||||
|
|
||||||
|
[AuthenticationCubit](../wyatt_authentication_bloc/AuthenticationCubit/AuthenticationCubit.md) ({required [AuthenticationRepository](../wyatt_authentication_bloc/AuthenticationRepository-class.md)<Data> authenticationRepository})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
##### [authenticationRepository](../wyatt_authentication_bloc/AuthenticationCubit/authenticationRepository.md) → [AuthenticationRepository](../wyatt_authentication_bloc/AuthenticationRepository-class.md)<Data>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
_<span class="feature">final</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [hashCode](https://api.flutter.dev/flutter/dart-core/Object/hashCode.html) → [int](https://api.flutter.dev/flutter/dart-core/int-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The hash code for this object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [isClosed](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/isClosed.html) → [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Whether the bloc is closed.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [runtimeType](https://api.flutter.dev/flutter/dart-core/Object/runtimeType.html) → [Type](https://api.flutter.dev/flutter/dart-core/Type-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A representation of the runtime type of the object.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [state](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/state.html) → [AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The current <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/state.html">state</a>.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [stream](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/stream.html) → [Stream](https://api.flutter.dev/flutter/dart-async/Stream-class.html)<[AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data>>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The current <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/stream.html">stream</a> of states.
|
||||||
|
_<span class="feature">read-only</span><span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Methods
|
||||||
|
|
||||||
|
##### [addError](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/addError.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) error, [[StackTrace](https://api.flutter.dev/flutter/dart-core/StackTrace-class.html)? stackTrace]) void
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reports an <code>error</code> which triggers <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onError.html">onError</a> with an optional <a href="https://api.flutter.dev/flutter/dart-core/StackTrace-class.html">StackTrace</a>.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [close](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/close.html)() [Future](https://api.flutter.dev/flutter/dart-async/Future-class.html)<void>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Closes the instance.
|
||||||
|
This method should be called when the instance is no longer needed.
|
||||||
|
Once <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/close.html">close</a> is called, the instance can no longer be used.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [currentSession](../wyatt_authentication_bloc/AuthenticationCubit/currentSession.md)() [SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data>?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Returns latest session wrapper.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [delete](../wyatt_authentication_bloc/AuthenticationCubit/delete.md)() [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Delete account.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [emit](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/emit.html)([AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data> state) void
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Updates the <code>state</code> to the provided <code>state</code>.
|
||||||
|
<a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/emit.html">emit</a> does nothing if the <code>state</code> being emitted
|
||||||
|
is equal to the current <code>state</code>.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [noSuchMethod](https://api.flutter.dev/flutter/dart-core/Object/noSuchMethod.html)([Invocation](https://api.flutter.dev/flutter/dart-core/Invocation-class.html) invocation) dynamic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Invoked when a non-existent method or property is accessed.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [onChange](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onChange.html)([Change](https://pub.dev/documentation/bloc/8.1.0/bloc/Change-class.html)<[AuthenticationState](../wyatt_authentication_bloc/AuthenticationState-class.md)<Data>> change) void
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Called whenever a <code>change</code> occurs with the given <code>change</code>.
|
||||||
|
A <code>change</code> occurs when a new <code>state</code> is emitted.
|
||||||
|
<a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onChange.html">onChange</a> is called before the <code>state</code> of the <code>cubit</code> is updated.
|
||||||
|
<a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onChange.html">onChange</a> is a great spot to add logging/analytics for a specific <code>cubit</code>.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [onDelete](../wyatt_authentication_bloc/AuthenticationCubit/onDelete.md)() FutureOrResult<void>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This callback is triggered when the current account is deleted from
|
||||||
|
the remote.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [onError](https://pub.dev/documentation/bloc/8.1.0/bloc/BlocBase/onError.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) error, [StackTrace](https://api.flutter.dev/flutter/dart-core/StackTrace-class.html) stackTrace) void
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Called whenever an <code>error</code> occurs and notifies <a href="https://pub.dev/documentation/bloc/8.1.0/bloc/BlocObserver/onError.html">BlocObserver.onError</a>.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [onReauthenticate](../wyatt_authentication_bloc/AuthenticationCubit/onReauthenticate.md)(Result<[Account](../wyatt_authentication_bloc/Account-class.md), AppException> result) FutureOrResult<Data?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This callback is triggered when the account is re-authenticated
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [onRefresh](../wyatt_authentication_bloc/AuthenticationCubit/onRefresh.md)(Result<[Account](../wyatt_authentication_bloc/Account-class.md), AppException> result) FutureOrResult<Data?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This callback is triggered when the account is refreshed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [onSignInFromCache](../wyatt_authentication_bloc/AuthenticationCubit/onSignInFromCache.md)([SessionWrapper](../wyatt_authentication_bloc/SessionWrapper-class.md)<Data> wrapper) FutureOrResult<Data?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This callback is triggered when the user is automaticcaly logged in from
|
||||||
|
the cache.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [onSignOut](../wyatt_authentication_bloc/AuthenticationCubit/onSignOut.md)() FutureOrResult<void>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This callback is triggered when the user is logged out.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [reauthenticate](../wyatt_authentication_bloc/AuthenticationCubit/reauthenticate.md)() [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Some security-sensitive actions—such as deleting an account,
|
||||||
|
setting a primary email address, and changing a password—require that
|
||||||
|
the user has recently signed in.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [refresh](../wyatt_authentication_bloc/AuthenticationCubit/refresh.md)() [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Refreshes the current user, if signed in.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [signOut](../wyatt_authentication_bloc/AuthenticationCubit/signOut.md)() [FutureOr](https://api.flutter.dev/flutter/dart-async/FutureOr-class.html)<void>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Signs out the current user.
|
||||||
|
It also clears the cache and the associated data.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### [toString](https://api.flutter.dev/flutter/dart-core/Object/toString.html)() [String](https://api.flutter.dev/flutter/dart-core/String-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A string representation of this object.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Operators
|
||||||
|
|
||||||
|
##### [operator ==](https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html)([Object](https://api.flutter.dev/flutter/dart-core/Object-class.html) other) [bool](https://api.flutter.dev/flutter/dart-core/bool-class.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The equality operator.
|
||||||
|
_<span class="feature">inherited</span>_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# AuthenticationCubit<Data> constructor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*[<Null safety>](https://dart.dev/null-safety)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AuthenticationCubit<Data>({required [AuthenticationRepository](../../wyatt_authentication_bloc/AuthenticationRepository-class.md)<Data> authenticationRepository})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
```dart
|
||||||
|
AuthenticationCubit({
|
||||||
|
required this.authenticationRepository,
|
||||||
|
}) : super(const AuthenticationState.unknown()) {
|
||||||
|
_listenForAuthenticationChanges();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user