Compare commits
No commits in common. "a4c73421d28f30292a019c2e8575172517e36c29" and "543b9421cadae5081569c21e19feca585054165b" have entirely different histories.
a4c73421d2
...
543b9421ca
@ -25,7 +25,7 @@ class AlbumMockDataSourceImpl extends AlbumRemoteDataSource {
|
|||||||
id: 1,
|
id: 1,
|
||||||
userId: 1,
|
userId: 1,
|
||||||
title: 'Album 1',
|
title: 'Album 1',
|
||||||
),
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -58,8 +58,8 @@ class PhotosGridThumbnail
|
|||||||
bottom: 10,
|
bottom: 10,
|
||||||
right: 10,
|
right: 10,
|
||||||
child: Icon(Icons.favorite),
|
child: Icon(Icons.favorite),
|
||||||
),
|
)
|
||||||
],
|
]
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -71,8 +71,7 @@ class App extends StatelessWidget {
|
|||||||
if (authState.status != previous?.status) {
|
if (authState.status != previous?.status) {
|
||||||
previous = authState;
|
previous = authState;
|
||||||
// Checking if current path is onboarding or not
|
// Checking if current path is onboarding or not
|
||||||
final isOnboarding =
|
final isOnboarding = AppRouter.publicRoutes.contains(state.subloc);
|
||||||
AppRouter.publicRoutes.contains(state.matchedLocation);
|
|
||||||
if (authState.status == AuthenticationStatus.unauthenticated) {
|
if (authState.status == AuthenticationStatus.unauthenticated) {
|
||||||
debugPrint('Not logged');
|
debugPrint('Not logged');
|
||||||
if (!isOnboarding) {
|
if (!isOnboarding) {
|
||||||
|
@ -30,11 +30,11 @@ dependencies:
|
|||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
go_router: ^10.1.0
|
go_router: ^5.1.5
|
||||||
firebase_core: ^2.1.1
|
firebase_core: ^2.1.1
|
||||||
flutter_bloc: ^8.1.1
|
flutter_bloc: ^8.1.1
|
||||||
firebase_auth: ^4.2.0
|
firebase_auth: ^4.2.0
|
||||||
google_sign_in: ^6.1.4
|
google_sign_in: ^5.4.2
|
||||||
get_it: ^7.2.0
|
get_it: ^7.2.0
|
||||||
|
|
||||||
wyatt_authentication_bloc:
|
wyatt_authentication_bloc:
|
||||||
|
@ -33,7 +33,7 @@ abstract class Forms {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
customPasswordValidator ?? const Password.pure(),
|
customPasswordValidator ?? const Password.pure(),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
);
|
);
|
||||||
@ -55,7 +55,7 @@ abstract class Forms {
|
|||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
customPasswordValidator ?? const Password.pure(),
|
customPasswordValidator ?? const Password.pure(),
|
||||||
),
|
),
|
||||||
...extraSignUpInputs ?? [],
|
...extraSignUpInputs ?? []
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
);
|
);
|
||||||
@ -93,7 +93,7 @@ abstract class Forms {
|
|||||||
customPasswordValidator ?? const Password.pure(),
|
customPasswordValidator ?? const Password.pure(),
|
||||||
metadata: const FormInputMetadata(isRequired: false),
|
metadata: const FormInputMetadata(isRequired: false),
|
||||||
),
|
),
|
||||||
...extraEditAccountInputs ?? [],
|
...extraEditAccountInputs ?? []
|
||||||
],
|
],
|
||||||
validationStrategy: const OnlyRequiredInputValidator(),
|
validationStrategy: const OnlyRequiredInputValidator(),
|
||||||
name: AuthFormName.editAccountForm,
|
name: AuthFormName.editAccountForm,
|
||||||
|
@ -33,7 +33,7 @@ class AuthenticationMockCacheDataSourceImpl<Data>
|
|||||||
Future<Account?> getCachedAccount() async {
|
Future<Account?> getCachedAccount() async {
|
||||||
await Future<void>.delayed(const Duration(milliseconds: 200));
|
await Future<void>.delayed(const Duration(milliseconds: 200));
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -15,7 +15,7 @@ dependencies:
|
|||||||
flutter_bloc: ^8.1.1
|
flutter_bloc: ^8.1.1
|
||||||
equatable: ^2.0.5
|
equatable: ^2.0.5
|
||||||
firebase_auth: ^4.2.0
|
firebase_auth: ^4.2.0
|
||||||
google_sign_in: ^6.1.4
|
google_sign_in: ^5.4.2
|
||||||
rxdart: ^0.27.7
|
rxdart: ^0.27.7
|
||||||
|
|
||||||
wyatt_form_bloc:
|
wyatt_form_bloc:
|
||||||
@ -30,12 +30,12 @@ dependencies:
|
|||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||||
version: ^0.0.5
|
version: ^0.0.5
|
||||||
flutter_secure_storage: ^8.0.0
|
flutter_secure_storage: ^8.0.0
|
||||||
http: ^1.1.0
|
http: ^0.13.5
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test: { sdk: flutter }
|
flutter_test: { sdk: flutter }
|
||||||
bloc_test: ^9.1.0
|
bloc_test: ^9.1.0
|
||||||
mocktail: ^1.0.0
|
mocktail: ^0.3.0
|
||||||
|
|
||||||
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/
|
||||||
|
@ -46,7 +46,7 @@ void main() {
|
|||||||
AuthenticationSession.fromEvent(
|
AuthenticationSession.fromEvent(
|
||||||
SignedInFromCacheEvent(account: account),
|
SignedInFromCacheEvent(account: account),
|
||||||
data: 10,
|
data: 10,
|
||||||
),
|
)
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ void main() {
|
|||||||
),
|
),
|
||||||
const EmailVerificationState(
|
const EmailVerificationState(
|
||||||
status: FormStatus.submissionSuccess,
|
status: FormStatus.submissionSuccess,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -135,7 +135,7 @@ void main() {
|
|||||||
const EmailVerificationState(
|
const EmailVerificationState(
|
||||||
errorMessage: 'erreur',
|
errorMessage: 'erreur',
|
||||||
status: FormStatus.submissionFailure,
|
status: FormStatus.submissionFailure,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -192,7 +192,7 @@ void main() {
|
|||||||
const EmailVerificationState(
|
const EmailVerificationState(
|
||||||
isVerified: true,
|
isVerified: true,
|
||||||
status: FormStatus.submissionSuccess,
|
status: FormStatus.submissionSuccess,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ void main() {
|
|||||||
),
|
),
|
||||||
const EmailVerificationState(
|
const EmailVerificationState(
|
||||||
status: FormStatus.submissionSuccess,
|
status: FormStatus.submissionSuccess,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ void main() {
|
|||||||
const EmailVerificationState(
|
const EmailVerificationState(
|
||||||
errorMessage: 'erreur',
|
errorMessage: 'erreur',
|
||||||
status: FormStatus.submissionFailure,
|
status: FormStatus.submissionFailure,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -41,7 +41,7 @@ void main() {
|
|||||||
final WyattForm form = WyattFormImpl(
|
final WyattForm form = WyattFormImpl(
|
||||||
[
|
[
|
||||||
FormInput(AuthFormField.email, const Email.pure()),
|
FormInput(AuthFormField.email, const Email.pure()),
|
||||||
FormInput(AuthFormField.password, const Password.pure()),
|
FormInput(AuthFormField.password, const Password.pure())
|
||||||
],
|
],
|
||||||
name: AuthFormName.passwordResetForm,
|
name: AuthFormName.passwordResetForm,
|
||||||
);
|
);
|
||||||
@ -260,7 +260,7 @@ void main() {
|
|||||||
name: AuthFormName.passwordResetForm,
|
name: AuthFormName.passwordResetForm,
|
||||||
),
|
),
|
||||||
status: FormStatus.submissionSuccess,
|
status: FormStatus.submissionSuccess,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -327,7 +327,7 @@ void main() {
|
|||||||
name: AuthFormName.passwordResetForm,
|
name: AuthFormName.passwordResetForm,
|
||||||
),
|
),
|
||||||
status: FormStatus.submissionFailure,
|
status: FormStatus.submissionFailure,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -46,7 +46,7 @@ void main() {
|
|||||||
final WyattForm form = WyattFormImpl(
|
final WyattForm form = WyattFormImpl(
|
||||||
[
|
[
|
||||||
FormInput(AuthFormField.email, const Email.pure()),
|
FormInput(AuthFormField.email, const Email.pure()),
|
||||||
FormInput(AuthFormField.password, const Password.pure()),
|
FormInput(AuthFormField.password, const Password.pure())
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
);
|
);
|
||||||
@ -102,7 +102,7 @@ void main() {
|
|||||||
AuthFormField.email,
|
AuthFormField.email,
|
||||||
const Email.dirty(invalidEmailString),
|
const Email.dirty(invalidEmailString),
|
||||||
),
|
),
|
||||||
FormInput(AuthFormField.password, const Password.pure()),
|
FormInput(AuthFormField.password, const Password.pure())
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -126,7 +126,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -145,7 +145,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -163,7 +163,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -191,7 +191,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(invalidPasswordString),
|
const Password.dirty(invalidPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -215,7 +215,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.pure(),
|
const Password.pure(),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -234,7 +234,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.pure(),
|
const Password.pure(),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -252,7 +252,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -287,7 +287,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -312,7 +312,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -331,7 +331,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -364,7 +364,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -383,7 +383,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -401,7 +401,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -417,12 +417,12 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
status: FormStatus.submissionSuccess,
|
status: FormStatus.submissionSuccess,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -448,7 +448,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -467,7 +467,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -485,7 +485,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -501,12 +501,12 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
status: FormStatus.submissionFailure,
|
status: FormStatus.submissionFailure,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -527,7 +527,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -566,7 +566,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -584,7 +584,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.pure(),
|
const Password.pure(),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -600,12 +600,12 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.pure(),
|
const Password.pure(),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
status: FormStatus.submissionSuccess,
|
status: FormStatus.submissionSuccess,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -630,7 +630,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -648,7 +648,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.pure(),
|
const Password.pure(),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
@ -664,12 +664,12 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.pure(),
|
const Password.pure(),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
),
|
),
|
||||||
status: FormStatus.submissionFailure,
|
status: FormStatus.submissionFailure,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -22,7 +22,7 @@ void main() {
|
|||||||
final WyattForm form = WyattFormImpl(
|
final WyattForm form = WyattFormImpl(
|
||||||
[
|
[
|
||||||
FormInput(AuthFormField.email, const Email.pure()),
|
FormInput(AuthFormField.email, const Email.pure()),
|
||||||
FormInput(AuthFormField.password, const Password.pure()),
|
FormInput(AuthFormField.password, const Password.pure())
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
);
|
);
|
||||||
|
@ -46,7 +46,7 @@ void main() {
|
|||||||
final WyattForm form = WyattFormImpl(
|
final WyattForm form = WyattFormImpl(
|
||||||
[
|
[
|
||||||
FormInput(AuthFormField.email, const Email.pure()),
|
FormInput(AuthFormField.email, const Email.pure()),
|
||||||
FormInput(AuthFormField.password, const Password.pure()),
|
FormInput(AuthFormField.password, const Password.pure())
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
);
|
);
|
||||||
@ -98,7 +98,7 @@ void main() {
|
|||||||
AuthFormField.email,
|
AuthFormField.email,
|
||||||
const Email.dirty(invalidEmailString),
|
const Email.dirty(invalidEmailString),
|
||||||
),
|
),
|
||||||
FormInput(AuthFormField.password, const Password.pure()),
|
FormInput(AuthFormField.password, const Password.pure())
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -122,7 +122,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -141,7 +141,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -159,7 +159,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -187,7 +187,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(invalidPasswordString),
|
const Password.dirty(invalidPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -211,7 +211,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.pure(),
|
const Password.pure(),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -230,7 +230,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.pure(),
|
const Password.pure(),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -248,7 +248,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -283,7 +283,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -302,7 +302,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -335,7 +335,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -354,7 +354,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -372,7 +372,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -388,12 +388,12 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
status: FormStatus.submissionSuccess,
|
status: FormStatus.submissionSuccess,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -419,7 +419,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -438,7 +438,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -456,7 +456,7 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
@ -472,12 +472,12 @@ void main() {
|
|||||||
FormInput(
|
FormInput(
|
||||||
AuthFormField.password,
|
AuthFormField.password,
|
||||||
const Password.dirty(validPasswordString),
|
const Password.dirty(validPasswordString),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
name: AuthFormName.signUpForm,
|
name: AuthFormName.signUpForm,
|
||||||
),
|
),
|
||||||
status: FormStatus.submissionFailure,
|
status: FormStatus.submissionFailure,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -487,7 +487,7 @@ void main() {
|
|||||||
FormInput<dynamic, FormInputValidator<dynamic, ValidationError>,
|
FormInput<dynamic, FormInputValidator<dynamic, ValidationError>,
|
||||||
dynamic>>[
|
dynamic>>[
|
||||||
FormInput(AuthFormField.email, const Email.pure()),
|
FormInput(AuthFormField.email, const Email.pure()),
|
||||||
FormInput(AuthFormField.password, const Password.pure()),
|
FormInput(AuthFormField.password, const Password.pure())
|
||||||
];
|
];
|
||||||
|
|
||||||
final inputsB = <
|
final inputsB = <
|
||||||
|
@ -22,7 +22,7 @@ void main() {
|
|||||||
final WyattForm form = WyattFormImpl(
|
final WyattForm form = WyattFormImpl(
|
||||||
[
|
[
|
||||||
FormInput(AuthFormField.email, const Email.pure()),
|
FormInput(AuthFormField.email, const Email.pure()),
|
||||||
FormInput(AuthFormField.password, const Password.pure()),
|
FormInput(AuthFormField.password, const Password.pure())
|
||||||
],
|
],
|
||||||
name: AuthFormName.signInForm,
|
name: AuthFormName.signInForm,
|
||||||
);
|
);
|
||||||
|
@ -31,7 +31,7 @@ class ExampleCubit extends Cubit<CrudState> {
|
|||||||
'DATA LOADED 1',
|
'DATA LOADED 1',
|
||||||
'DATA LOADED 2',
|
'DATA LOADED 2',
|
||||||
'DATA LOADED 3',
|
'DATA LOADED 3',
|
||||||
'DATA LOADED 4',
|
'DATA LOADED 4'
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
await Future<void>.delayed(const Duration(seconds: 1));
|
await Future<void>.delayed(const Duration(seconds: 1));
|
||||||
|
@ -53,8 +53,7 @@ class DefaultFirebaseOptions {
|
|||||||
messagingSenderId: '100151285458',
|
messagingSenderId: '100151285458',
|
||||||
projectId: 'wyatt-notification-example',
|
projectId: 'wyatt-notification-example',
|
||||||
storageBucket: 'wyatt-notification-example.appspot.com',
|
storageBucket: 'wyatt-notification-example.appspot.com',
|
||||||
iosClientId:
|
iosClientId: '100151285458-a9notq1k1padf0vk9ove8ll3amjgi7mn.apps.googleusercontent.com',
|
||||||
'100151285458-a9notq1k1padf0vk9ove8ll3amjgi7mn.apps.googleusercontent.com',
|
|
||||||
iosBundleId: 'com.example.notificationBlocExample',
|
iosBundleId: 'com.example.notificationBlocExample',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -22,10 +22,11 @@ import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_me
|
|||||||
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
||||||
|
|
||||||
class CloudMessagingRepositoryImpl extends CloudMessagingRepository {
|
class CloudMessagingRepositoryImpl extends CloudMessagingRepository {
|
||||||
|
final CloudMessagingRemoteDataSource _notificationRemoteDataSource;
|
||||||
|
|
||||||
CloudMessagingRepositoryImpl({
|
CloudMessagingRepositoryImpl({
|
||||||
required CloudMessagingRemoteDataSource notificationRemoteDataSource,
|
required CloudMessagingRemoteDataSource notificationRemoteDataSource,
|
||||||
}) : _notificationRemoteDataSource = notificationRemoteDataSource;
|
}) : _notificationRemoteDataSource = notificationRemoteDataSource;
|
||||||
final CloudMessagingRemoteDataSource _notificationRemoteDataSource;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FutureOrResult<String?> getToken() => Result.tryCatchAsync(
|
FutureOrResult<String?> getToken() => Result.tryCatchAsync(
|
||||||
|
@ -18,10 +18,11 @@ import 'package:wyatt_architecture/wyatt_architecture.dart';
|
|||||||
import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart';
|
import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart';
|
||||||
|
|
||||||
class GetCloudMessagingTokenUseCase extends AsyncUseCase<void, String?> {
|
class GetCloudMessagingTokenUseCase extends AsyncUseCase<void, String?> {
|
||||||
|
final CloudMessagingRepository _notificationRepository;
|
||||||
|
|
||||||
GetCloudMessagingTokenUseCase({
|
GetCloudMessagingTokenUseCase({
|
||||||
required CloudMessagingRepository notificationRepository,
|
required CloudMessagingRepository notificationRepository,
|
||||||
}) : _notificationRepository = notificationRepository;
|
}) : _notificationRepository = notificationRepository;
|
||||||
final CloudMessagingRepository _notificationRepository;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FutureOrResult<String?> execute(void params) =>
|
FutureOrResult<String?> execute(void params) =>
|
||||||
|
@ -18,10 +18,11 @@ import 'package:wyatt_architecture/wyatt_architecture.dart';
|
|||||||
import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart';
|
import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart';
|
||||||
|
|
||||||
class InitCloudmessagingUseCase extends AsyncUseCase<NoParam, void> {
|
class InitCloudmessagingUseCase extends AsyncUseCase<NoParam, void> {
|
||||||
|
final CloudMessagingRepository _notificationRepository;
|
||||||
|
|
||||||
InitCloudmessagingUseCase({
|
InitCloudmessagingUseCase({
|
||||||
required CloudMessagingRepository notificationRepository,
|
required CloudMessagingRepository notificationRepository,
|
||||||
}) : _notificationRepository = notificationRepository;
|
}) : _notificationRepository = notificationRepository;
|
||||||
final CloudMessagingRepository _notificationRepository;
|
|
||||||
@override
|
@override
|
||||||
FutureOrResult<void> execute(NoParam? params) =>
|
FutureOrResult<void> execute(NoParam? params) =>
|
||||||
_notificationRepository.init();
|
_notificationRepository.init();
|
||||||
|
@ -25,10 +25,11 @@ import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
|||||||
|
|
||||||
class ListenNotificationUseCase
|
class ListenNotificationUseCase
|
||||||
extends StreamUseCase<NoParam, RemoteNotification> {
|
extends StreamUseCase<NoParam, RemoteNotification> {
|
||||||
|
final CloudMessagingRepository _notificationRepository;
|
||||||
|
|
||||||
ListenNotificationUseCase({
|
ListenNotificationUseCase({
|
||||||
required CloudMessagingRepository notificationRepository,
|
required CloudMessagingRepository notificationRepository,
|
||||||
}) : _notificationRepository = notificationRepository;
|
}) : _notificationRepository = notificationRepository;
|
||||||
final CloudMessagingRepository _notificationRepository;
|
|
||||||
@override
|
@override
|
||||||
FutureOrResult<Stream<RemoteNotification>> execute(NoParam? params) async {
|
FutureOrResult<Stream<RemoteNotification>> execute(NoParam? params) async {
|
||||||
Stream<RemoteNotification>? notificationStream;
|
Stream<RemoteNotification>? notificationStream;
|
||||||
|
@ -18,10 +18,11 @@ import 'package:wyatt_architecture/wyatt_architecture.dart';
|
|||||||
import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart';
|
import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart';
|
||||||
|
|
||||||
class RequestCloudMessagingPermissionUseCase extends AsyncUseCase<void, void> {
|
class RequestCloudMessagingPermissionUseCase extends AsyncUseCase<void, void> {
|
||||||
|
final CloudMessagingRepository _notificationRepository;
|
||||||
|
|
||||||
RequestCloudMessagingPermissionUseCase({
|
RequestCloudMessagingPermissionUseCase({
|
||||||
required CloudMessagingRepository notificationRepository,
|
required CloudMessagingRepository notificationRepository,
|
||||||
}) : _notificationRepository = notificationRepository;
|
}) : _notificationRepository = notificationRepository;
|
||||||
final CloudMessagingRepository _notificationRepository;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FutureOrResult<void> execute(void params) =>
|
FutureOrResult<void> execute(void params) =>
|
||||||
|
@ -20,10 +20,11 @@ import 'package:wyatt_architecture/wyatt_architecture.dart';
|
|||||||
import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart';
|
import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_messaging_repository.dart';
|
||||||
|
|
||||||
class SubscribeToNotificationTopicUseCase extends AsyncUseCase<String, void> {
|
class SubscribeToNotificationTopicUseCase extends AsyncUseCase<String, void> {
|
||||||
|
final CloudMessagingRepository _notificationRepository;
|
||||||
|
|
||||||
SubscribeToNotificationTopicUseCase({
|
SubscribeToNotificationTopicUseCase({
|
||||||
required CloudMessagingRepository notificationRepository,
|
required CloudMessagingRepository notificationRepository,
|
||||||
}) : _notificationRepository = notificationRepository;
|
}) : _notificationRepository = notificationRepository;
|
||||||
final CloudMessagingRepository _notificationRepository;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FutureOr<void> onStart(String? params) {
|
FutureOr<void> onStart(String? params) {
|
||||||
|
@ -21,10 +21,11 @@ import 'package:wyatt_cloud_messaging_bloc_base/src/domain/repositories/cloud_me
|
|||||||
|
|
||||||
class UnsubscribeFromNotificationTopicUseCase
|
class UnsubscribeFromNotificationTopicUseCase
|
||||||
extends AsyncUseCase<String, void> {
|
extends AsyncUseCase<String, void> {
|
||||||
|
final CloudMessagingRepository _notificationRepository;
|
||||||
|
|
||||||
UnsubscribeFromNotificationTopicUseCase({
|
UnsubscribeFromNotificationTopicUseCase({
|
||||||
required CloudMessagingRepository notificationRepository,
|
required CloudMessagingRepository notificationRepository,
|
||||||
}) : _notificationRepository = notificationRepository;
|
}) : _notificationRepository = notificationRepository;
|
||||||
final CloudMessagingRepository _notificationRepository;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FutureOr<void> onStart(String? params) {
|
FutureOr<void> onStart(String? params) {
|
||||||
|
@ -30,6 +30,11 @@ part 'cloud_messaging_state.dart';
|
|||||||
typedef OnNotification = void Function(RemoteNotification);
|
typedef OnNotification = void Function(RemoteNotification);
|
||||||
|
|
||||||
class CloudMessagingCubit extends Cubit<CloudmessagingState> {
|
class CloudMessagingCubit extends Cubit<CloudmessagingState> {
|
||||||
|
final ListenNotificationUseCase _listenNotification;
|
||||||
|
final SubscribeToNotificationTopicUseCase? _subscribe;
|
||||||
|
final UnsubscribeFromNotificationTopicUseCase? _unsubscribe;
|
||||||
|
|
||||||
|
final OnNotification? handleNotification;
|
||||||
CloudMessagingCubit({
|
CloudMessagingCubit({
|
||||||
required ListenNotificationUseCase listenNotification,
|
required ListenNotificationUseCase listenNotification,
|
||||||
SubscribeToNotificationTopicUseCase? subscribe,
|
SubscribeToNotificationTopicUseCase? subscribe,
|
||||||
@ -39,11 +44,6 @@ class CloudMessagingCubit extends Cubit<CloudmessagingState> {
|
|||||||
_subscribe = subscribe,
|
_subscribe = subscribe,
|
||||||
_unsubscribe = unsubscribe,
|
_unsubscribe = unsubscribe,
|
||||||
super(const CloudmessagingState());
|
super(const CloudmessagingState());
|
||||||
final ListenNotificationUseCase _listenNotification;
|
|
||||||
final SubscribeToNotificationTopicUseCase? _subscribe;
|
|
||||||
final UnsubscribeFromNotificationTopicUseCase? _unsubscribe;
|
|
||||||
|
|
||||||
final OnNotification? handleNotification;
|
|
||||||
|
|
||||||
Future<void> listenNotification() async {
|
Future<void> listenNotification() async {
|
||||||
final notificaitons = await _listenNotification.execute(const NoParam());
|
final notificaitons = await _listenNotification.execute(const NoParam());
|
||||||
|
@ -17,9 +17,10 @@
|
|||||||
part of 'cloud_messaging_cubit.dart';
|
part of 'cloud_messaging_cubit.dart';
|
||||||
|
|
||||||
class CloudmessagingState extends Equatable {
|
class CloudmessagingState extends Equatable {
|
||||||
const CloudmessagingState([this.remoteNotification]);
|
|
||||||
final RemoteNotification? remoteNotification;
|
final RemoteNotification? remoteNotification;
|
||||||
|
|
||||||
|
const CloudmessagingState([this.remoteNotification]);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object?> get props => [remoteNotification];
|
List<Object?> get props => [remoteNotification];
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ environment:
|
|||||||
dependencies:
|
dependencies:
|
||||||
build: ^2.3.1
|
build: ^2.3.1
|
||||||
source_gen: ^1.2.7
|
source_gen: ^1.2.7
|
||||||
analyzer: ^6.2.0
|
analyzer: ^5.4.0
|
||||||
|
|
||||||
wyatt_component_copy_with_extension:
|
wyatt_component_copy_with_extension:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
@ -33,7 +33,8 @@ class CrudFirestoreDataSourceImpl<Model extends ObjectModel, Entity>
|
|||||||
required Model Function(
|
required Model Function(
|
||||||
DocumentSnapshot<Map<String, dynamic>>,
|
DocumentSnapshot<Map<String, dynamic>>,
|
||||||
SnapshotOptions?,
|
SnapshotOptions?,
|
||||||
) fromFirestore,
|
)
|
||||||
|
fromFirestore,
|
||||||
|
|
||||||
/// The function that converts a [Model] to a [Map<String, Object?>].
|
/// The function that converts a [Model] to a [Map<String, Object?>].
|
||||||
required Map<String, Object?> Function(Model, SetOptions?) toFirestore,
|
required Map<String, Object?> Function(Model, SetOptions?) toFirestore,
|
||||||
|
@ -289,7 +289,7 @@ abstract class CrudAdvancedCubit<Model extends ObjectModel>
|
|||||||
WhereQueryType.whereIn,
|
WhereQueryType.whereIn,
|
||||||
'id',
|
'id',
|
||||||
ids,
|
ids,
|
||||||
),
|
)
|
||||||
]);
|
]);
|
||||||
if (result.isOk) {
|
if (result.isOk) {
|
||||||
return CrudListLoaded<Model?>(result.ok ?? []);
|
return CrudListLoaded<Model?>(result.ok ?? []);
|
||||||
|
@ -353,7 +353,7 @@ abstract class CrudCubit<Model extends ObjectModel> extends CrudBaseCubit {
|
|||||||
WhereQueryType.whereIn,
|
WhereQueryType.whereIn,
|
||||||
'id',
|
'id',
|
||||||
ids,
|
ids,
|
||||||
),
|
)
|
||||||
]);
|
]);
|
||||||
if (result.isOk) {
|
if (result.isOk) {
|
||||||
return CrudListLoaded<Model?>(result.ok ?? []);
|
return CrudListLoaded<Model?>(result.ok ?? []);
|
||||||
|
@ -26,8 +26,9 @@ class FormDifference extends FormOperation {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
WyattForm call(WyattForm a, WyattForm b) {
|
WyattForm call(WyattForm a, WyattForm b) {
|
||||||
final inputs = <FormInput<dynamic,
|
final inputs = <
|
||||||
FormInputValidator<dynamic, ValidationError>, dynamic>>[];
|
FormInput<dynamic, FormInputValidator<dynamic, ValidationError>,
|
||||||
|
dynamic>>[];
|
||||||
|
|
||||||
for (final i in a.inputs) {
|
for (final i in a.inputs) {
|
||||||
if (!b.containsKey(i.key)) {
|
if (!b.containsKey(i.key)) {
|
||||||
|
@ -26,8 +26,9 @@ class FormIntersection extends FormOperation {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
WyattForm call(WyattForm a, WyattForm b) {
|
WyattForm call(WyattForm a, WyattForm b) {
|
||||||
final inputs = <FormInput<dynamic,
|
final inputs = <
|
||||||
FormInputValidator<dynamic, ValidationError>, dynamic>>[];
|
FormInput<dynamic, FormInputValidator<dynamic, ValidationError>,
|
||||||
|
dynamic>>[];
|
||||||
|
|
||||||
for (final i in a.inputs) {
|
for (final i in a.inputs) {
|
||||||
if (b.containsKey(i.key)) {
|
if (b.containsKey(i.key)) {
|
||||||
|
@ -26,8 +26,9 @@ class FormUnion extends FormOperation {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
WyattForm call(WyattForm a, WyattForm b) {
|
WyattForm call(WyattForm a, WyattForm b) {
|
||||||
final inputs = <FormInput<dynamic,
|
final inputs = <
|
||||||
FormInputValidator<dynamic, ValidationError>, dynamic>>[];
|
FormInput<dynamic, FormInputValidator<dynamic, ValidationError>,
|
||||||
|
dynamic>>[];
|
||||||
|
|
||||||
for (final i in a.inputs) {
|
for (final i in a.inputs) {
|
||||||
inputs.add(i);
|
inputs.add(i);
|
||||||
|
@ -46,7 +46,7 @@ abstract class Convert {
|
|||||||
map.forEach(
|
map.forEach(
|
||||||
(key, value) => pairs.add([
|
(key, value) => pairs.add([
|
||||||
Uri.encodeQueryComponent(key, encoding: encoding ?? utf8),
|
Uri.encodeQueryComponent(key, encoding: encoding ?? utf8),
|
||||||
Uri.encodeQueryComponent(value, encoding: encoding ?? utf8),
|
Uri.encodeQueryComponent(value, encoding: encoding ?? utf8)
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
return pairs.map((pair) => '${pair[0]}=${pair[1]}').join('&');
|
return pairs.map((pair) => '${pair[0]}=${pair[1]}').join('&');
|
||||||
|
@ -10,7 +10,7 @@ environment:
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
crypto: ^3.0.2
|
crypto: ^3.0.2
|
||||||
http: ^1.1.0
|
http: ^0.13.4
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
|
@ -44,7 +44,7 @@ class App extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
GlobalMaterialLocalizations.delegate,
|
GlobalMaterialLocalizations.delegate,
|
||||||
GlobalWidgetsLocalizations.delegate,
|
GlobalWidgetsLocalizations.delegate
|
||||||
],
|
],
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
|
@ -93,7 +93,7 @@ class I18nFileParser extends Parser<String, String> {
|
|||||||
|
|
||||||
String selectToString(Select token) {
|
String selectToString(Select token) {
|
||||||
final Map<Object, String> cases = {
|
final Map<Object, String> cases = {
|
||||||
for (final e in token.options.map(
|
for (var e in token.options.map(
|
||||||
(o) => MapEntry(
|
(o) => MapEntry(
|
||||||
o.name,
|
o.name,
|
||||||
o.value.map(parsedElementToString).join(),
|
o.value.map(parsedElementToString).join(),
|
||||||
|
@ -27,7 +27,7 @@ environment:
|
|||||||
# the latest version available on pub.dev. To see which dependencies have newer
|
# the latest version available on pub.dev. To see which dependencies have newer
|
||||||
# versions available, run `flutter pub outdated`.
|
# versions available, run `flutter pub outdated`.
|
||||||
dependencies:
|
dependencies:
|
||||||
http: ^1.1.0
|
http: ^0.13.4
|
||||||
|
|
||||||
wyatt_type_utils:
|
wyatt_type_utils:
|
||||||
path: "../"
|
path: "../"
|
||||||
|
@ -27,7 +27,7 @@ class Bars extends DemoPage {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
IconButton(onPressed: () {}, icon: const Icon(Icons.menu)),
|
IconButton(onPressed: () {}, icon: const Icon(Icons.menu))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const Gap(20),
|
const Gap(20),
|
||||||
@ -54,13 +54,13 @@ class Bars extends DemoPage {
|
|||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: Text('Votre programme'),
|
title: Text('Votre programme'),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
actions: [
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () {},
|
onPressed: () {},
|
||||||
icon: const Icon(Icons.clear),
|
icon: const Icon(Icons.clear),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const Gap(20),
|
const Gap(20),
|
||||||
@ -81,7 +81,7 @@ class Bars extends DemoPage {
|
|||||||
TextWrapper('ACCUEIL'),
|
TextWrapper('ACCUEIL'),
|
||||||
TextWrapper('VOTRE PROGRAMME'),
|
TextWrapper('VOTRE PROGRAMME'),
|
||||||
TextWrapper('LE STUDIO'),
|
TextWrapper('LE STUDIO'),
|
||||||
TextWrapper('SAVOIR FAIRE'),
|
TextWrapper('SAVOIR FAIRE')
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -50,7 +50,7 @@ class Buttons extends DemoPage {
|
|||||||
Gap(20),
|
Gap(20),
|
||||||
SimpleIconButtons(),
|
SimpleIconButtons(),
|
||||||
Gap(20),
|
Gap(20),
|
||||||
FileSelectionButtons(),
|
FileSelectionButtons()
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -43,12 +43,12 @@ class PortfolioCards extends StatelessWidget {
|
|||||||
'assets/images/mockup_1.png',
|
'assets/images/mockup_1.png',
|
||||||
alignment: Alignment.topCenter,
|
alignment: Alignment.topCenter,
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
keywords: const [
|
keywords: const [
|
||||||
TextWrapper('UI Design'),
|
TextWrapper('UI Design'),
|
||||||
TextWrapper('Developpement'),
|
TextWrapper('Developpement'),
|
||||||
TextWrapper('Deploiement'),
|
TextWrapper('Deploiement')
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const Gap(20),
|
const Gap(20),
|
||||||
@ -78,9 +78,9 @@ class PortfolioCards extends StatelessWidget {
|
|||||||
'assets/images/mockup_1.png',
|
'assets/images/mockup_1.png',
|
||||||
alignment: Alignment.topCenter,
|
alignment: Alignment.topCenter,
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const Gap(20),
|
const Gap(20),
|
||||||
@ -118,12 +118,12 @@ class PortfolioCards extends StatelessWidget {
|
|||||||
'assets/images/mockup_1.png',
|
'assets/images/mockup_1.png',
|
||||||
alignment: Alignment.topCenter,
|
alignment: Alignment.topCenter,
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
keywords: const [
|
keywords: const [
|
||||||
TextWrapper('UI Design'),
|
TextWrapper('UI Design'),
|
||||||
TextWrapper('Developpement'),
|
TextWrapper('Developpement'),
|
||||||
TextWrapper('Deploiement'),
|
TextWrapper('Deploiement')
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const Gap(20),
|
const Gap(20),
|
||||||
@ -168,12 +168,12 @@ class PortfolioCards extends StatelessWidget {
|
|||||||
'assets/images/mockup_1.png',
|
'assets/images/mockup_1.png',
|
||||||
alignment: Alignment.topCenter,
|
alignment: Alignment.topCenter,
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
keywords: const [
|
keywords: const [
|
||||||
TextWrapper('UI Design'),
|
TextWrapper('UI Design'),
|
||||||
TextWrapper('Developpement'),
|
TextWrapper('Developpement'),
|
||||||
TextWrapper('Deploiement'),
|
TextWrapper('Deploiement')
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -47,7 +47,7 @@ class SkillCards extends StatelessWidget {
|
|||||||
gradientColors:
|
gradientColors:
|
||||||
const MultiColor([Colors.red, Colors.orange]),
|
const MultiColor([Colors.red, Colors.orange]),
|
||||||
),
|
),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
bulletColors: const MultiColor([Colors.red, Colors.orange]),
|
bulletColors: const MultiColor([Colors.red, Colors.orange]),
|
||||||
title: const TextWrapper('Lorem Ipsum'),
|
title: const TextWrapper('Lorem Ipsum'),
|
||||||
@ -78,7 +78,7 @@ class SkillCards extends StatelessWidget {
|
|||||||
gradientColors:
|
gradientColors:
|
||||||
const MultiColor([Colors.blue, Colors.green]),
|
const MultiColor([Colors.blue, Colors.green]),
|
||||||
),
|
),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
bulletColors: const MultiColor([Colors.blue, Colors.green]),
|
bulletColors: const MultiColor([Colors.blue, Colors.green]),
|
||||||
title: const TextWrapper('Lorem Ipsum'),
|
title: const TextWrapper('Lorem Ipsum'),
|
||||||
|
@ -15,8 +15,8 @@ dependencies:
|
|||||||
|
|
||||||
flutter_bloc: ^8.1.2
|
flutter_bloc: ^8.1.2
|
||||||
flutter_localizations: { sdk: flutter }
|
flutter_localizations: { sdk: flutter }
|
||||||
gap: ^3.0.1
|
gap: ^2.0.1
|
||||||
google_fonts: ^5.1.0
|
google_fonts: ^4.0.3
|
||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
@ -63,7 +63,7 @@ class NavigationItem extends StatelessWidget {
|
|||||||
.themeExtension<TopBarThemeExtension>()
|
.themeExtension<TopBarThemeExtension>()
|
||||||
?.selectedIndicatorColors,
|
?.selectedIndicatorColors,
|
||||||
TopBarThemeExtensionDefault.from(Theme.of(context))
|
TopBarThemeExtensionDefault.from(Theme.of(context))
|
||||||
.selectedIndicatorColors,
|
.selectedIndicatorColors
|
||||||
],
|
],
|
||||||
valueValidator: (value) => value?.isGradient,
|
valueValidator: (value) => value?.isGradient,
|
||||||
transform: (value) =>
|
transform: (value) =>
|
||||||
@ -75,7 +75,7 @@ class NavigationItem extends StatelessWidget {
|
|||||||
.themeExtension<TopBarThemeExtension>()
|
.themeExtension<TopBarThemeExtension>()
|
||||||
?.selectedIndicatorColors,
|
?.selectedIndicatorColors,
|
||||||
TopBarThemeExtensionDefault.from(Theme.of(context))
|
TopBarThemeExtensionDefault.from(Theme.of(context))
|
||||||
.selectedIndicatorColors,
|
.selectedIndicatorColors
|
||||||
],
|
],
|
||||||
valueValidator: (value) => value?.isColor,
|
valueValidator: (value) => value?.isColor,
|
||||||
transform: (value) => value?.color,
|
transform: (value) => value?.color,
|
||||||
|
@ -177,7 +177,7 @@ class FileSelectionButtonScreen
|
|||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
if (style.shadow != null) ...[style.shadow!],
|
if (style.shadow != null) ...[style.shadow!]
|
||||||
],
|
],
|
||||||
borderRadius: style.radius,
|
borderRadius: style.radius,
|
||||||
),
|
),
|
||||||
@ -214,7 +214,7 @@ class FileSelectionButtonScreen
|
|||||||
GradientText.fromWrapper(
|
GradientText.fromWrapper(
|
||||||
title!,
|
title!,
|
||||||
gradientColors: style.foregroundColors,
|
gradientColors: style.foregroundColors,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
|
|
||||||
/// Choose color
|
/// Choose color
|
||||||
|
@ -156,7 +156,7 @@ class FlatButtonScreen extends CubitScreen<ButtonCubit, ButtonState> {
|
|||||||
: null,
|
: null,
|
||||||
|
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
if (style.shadow != null) ...[style.shadow!],
|
if (style.shadow != null) ...[style.shadow!]
|
||||||
],
|
],
|
||||||
borderRadius: style.radius,
|
borderRadius: style.radius,
|
||||||
),
|
),
|
||||||
@ -174,7 +174,7 @@ class FlatButtonScreen extends CubitScreen<ButtonCubit, ButtonState> {
|
|||||||
if (prefix != null &&
|
if (prefix != null &&
|
||||||
(prefix is Icon?) &&
|
(prefix is Icon?) &&
|
||||||
((prefix as Icon?)?.color != null)) ...[
|
((prefix as Icon?)?.color != null)) ...[
|
||||||
prefix!,
|
prefix!
|
||||||
] else if (style.foregroundColors?.color != null &&
|
] else if (style.foregroundColors?.color != null &&
|
||||||
prefix != null) ...[
|
prefix != null) ...[
|
||||||
ColorFiltered(
|
ColorFiltered(
|
||||||
@ -183,9 +183,9 @@ class FlatButtonScreen extends CubitScreen<ButtonCubit, ButtonState> {
|
|||||||
BlendMode.srcIn,
|
BlendMode.srcIn,
|
||||||
),
|
),
|
||||||
child: prefix,
|
child: prefix,
|
||||||
),
|
)
|
||||||
] else ...[
|
] else ...[
|
||||||
prefix ?? const SizedBox.shrink(),
|
prefix ?? const SizedBox.shrink()
|
||||||
],
|
],
|
||||||
Gap(style.padding?.vertical ?? 10),
|
Gap(style.padding?.vertical ?? 10),
|
||||||
|
|
||||||
@ -204,13 +204,13 @@ class FlatButtonScreen extends CubitScreen<ButtonCubit, ButtonState> {
|
|||||||
label!,
|
label!,
|
||||||
style: style.labelStyle,
|
style: style.labelStyle,
|
||||||
gradientColors: style.foregroundColors,
|
gradientColors: style.foregroundColors,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
Gap(style.padding?.vertical ?? 10),
|
Gap(style.padding?.vertical ?? 10),
|
||||||
if (suffix != null &&
|
if (suffix != null &&
|
||||||
(suffix is Icon?) &&
|
(suffix is Icon?) &&
|
||||||
((suffix as Icon?)?.color != null)) ...[
|
((suffix as Icon?)?.color != null)) ...[
|
||||||
suffix!,
|
suffix!
|
||||||
] else if (style.foregroundColors?.colors != null &&
|
] else if (style.foregroundColors?.colors != null &&
|
||||||
style.foregroundColors!.colors.isNotEmpty &&
|
style.foregroundColors!.colors.isNotEmpty &&
|
||||||
suffix != null) ...[
|
suffix != null) ...[
|
||||||
@ -220,7 +220,7 @@ class FlatButtonScreen extends CubitScreen<ButtonCubit, ButtonState> {
|
|||||||
BlendMode.srcIn,
|
BlendMode.srcIn,
|
||||||
),
|
),
|
||||||
child: suffix,
|
child: suffix,
|
||||||
),
|
)
|
||||||
] else if (style.foregroundColors?.color != null &&
|
] else if (style.foregroundColors?.color != null &&
|
||||||
suffix != null) ...[
|
suffix != null) ...[
|
||||||
ColorFiltered(
|
ColorFiltered(
|
||||||
@ -229,9 +229,9 @@ class FlatButtonScreen extends CubitScreen<ButtonCubit, ButtonState> {
|
|||||||
BlendMode.srcIn,
|
BlendMode.srcIn,
|
||||||
),
|
),
|
||||||
child: suffix,
|
child: suffix,
|
||||||
),
|
)
|
||||||
] else ...[
|
] else ...[
|
||||||
suffix ?? const SizedBox.shrink(),
|
suffix ?? const SizedBox.shrink()
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -152,7 +152,7 @@ class SimpleIconButtonScreen extends CubitScreen<ButtonCubit, ButtonState> {
|
|||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
if (style.shadow != null) ...[style.shadow!],
|
if (style.shadow != null) ...[style.shadow!]
|
||||||
],
|
],
|
||||||
borderRadius: style.radius,
|
borderRadius: style.radius,
|
||||||
),
|
),
|
||||||
|
@ -181,7 +181,7 @@ class SymbolButtonScreen
|
|||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
if (style.shadow != null) ...[style.shadow!],
|
if (style.shadow != null) ...[style.shadow!]
|
||||||
],
|
],
|
||||||
borderRadius: style.radius,
|
borderRadius: style.radius,
|
||||||
),
|
),
|
||||||
|
@ -102,7 +102,7 @@ class PricingCardTitles extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
const Gap(_bodyTopSpacing),
|
const Gap(_bodyTopSpacing),
|
||||||
],
|
]
|
||||||
],
|
],
|
||||||
RichText(
|
RichText(
|
||||||
text: TextSpan(
|
text: TextSpan(
|
||||||
@ -111,7 +111,7 @@ class PricingCardTitles extends StatelessWidget {
|
|||||||
TextSpan(
|
TextSpan(
|
||||||
text: price.text.data,
|
text: price.text.data,
|
||||||
style: price.text.style,
|
style: price.text.style,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
if (pricing?.hasAsterisk ?? false) ...[
|
if (pricing?.hasAsterisk ?? false) ...[
|
||||||
WidgetSpan(
|
WidgetSpan(
|
||||||
@ -128,7 +128,7 @@ class PricingCardTitles extends StatelessWidget {
|
|||||||
TextSpan(
|
TextSpan(
|
||||||
text: period.text.data,
|
text: period.text.data,
|
||||||
style: period.text.style,
|
style: period.text.style,
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -134,7 +134,7 @@ class QuoteCard extends QuoteCardComponent with $QuoteCardCWMixin {
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -147,7 +147,7 @@ class CardWrapper extends StatelessWidget {
|
|||||||
[
|
[
|
||||||
radius,
|
radius,
|
||||||
Theme.of(context).extension<CardThemeExtension>()?.radius,
|
Theme.of(context).extension<CardThemeExtension>()?.radius,
|
||||||
CardThemeExtensionDefault.from(Theme.of(context)).radius,
|
CardThemeExtensionDefault.from(Theme.of(context)).radius
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ class CardWrapper extends StatelessWidget {
|
|||||||
[
|
[
|
||||||
minSize,
|
minSize,
|
||||||
Theme.of(context).extension<CardThemeExtension>()?.minSize,
|
Theme.of(context).extension<CardThemeExtension>()?.minSize,
|
||||||
CardThemeExtensionDefault.from(Theme.of(context)).minSize,
|
CardThemeExtensionDefault.from(Theme.of(context)).minSize
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ class CardWrapper extends StatelessWidget {
|
|||||||
[
|
[
|
||||||
maxSize,
|
maxSize,
|
||||||
Theme.of(context).extension<CardThemeExtension>()?.maxSize,
|
Theme.of(context).extension<CardThemeExtension>()?.maxSize,
|
||||||
CardThemeExtensionDefault.from(Theme.of(context)).maxSize,
|
CardThemeExtensionDefault.from(Theme.of(context)).maxSize
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -178,8 +178,7 @@ class CardWrapper extends StatelessWidget {
|
|||||||
Theme.of(context)
|
Theme.of(context)
|
||||||
.extension<CardThemeExtension>()
|
.extension<CardThemeExtension>()
|
||||||
?.backgroundColors,
|
?.backgroundColors,
|
||||||
CardThemeExtensionDefault.from(Theme.of(context))
|
CardThemeExtensionDefault.from(Theme.of(context)).backgroundColors
|
||||||
.backgroundColors,
|
|
||||||
],
|
],
|
||||||
valueValidator: (multiColor) => multiColor?.isGradient,
|
valueValidator: (multiColor) => multiColor?.isGradient,
|
||||||
transform: (multiColor) =>
|
transform: (multiColor) =>
|
||||||
|
@ -12,9 +12,9 @@ dependencies:
|
|||||||
dotted_border: ^2.0.0+3
|
dotted_border: ^2.0.0+3
|
||||||
equatable: ^2.0.5
|
equatable: ^2.0.5
|
||||||
flutter: { sdk: flutter }
|
flutter: { sdk: flutter }
|
||||||
flutter_animate: ^4.2.0+1
|
flutter_animate: ^3.0.0
|
||||||
flutter_bloc: ^8.1.2
|
flutter_bloc: ^8.1.2
|
||||||
gap: ^3.0.1
|
gap: ^2.0.1
|
||||||
meta: ^1.8.0
|
meta: ^1.8.0
|
||||||
wyatt_bloc_helper:
|
wyatt_bloc_helper:
|
||||||
hosted:
|
hosted:
|
||||||
|
@ -32,7 +32,7 @@ dependencies:
|
|||||||
wyatt_ui_layout:
|
wyatt_ui_layout:
|
||||||
path: "../"
|
path: "../"
|
||||||
|
|
||||||
go_router: ^10.1.0
|
go_router: ^5.0.1
|
||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
@ -10,7 +10,7 @@ environment:
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter: { sdk: flutter }
|
flutter: { sdk: flutter }
|
||||||
gap: ^3.0.1
|
gap: ^2.0.1
|
||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
Loading…
x
Reference in New Issue
Block a user