diff --git a/example/lib/domain/dtos/register_param_dto.dart b/example/lib/domain/dtos/register_param_dto.dart index 2382c3e..ccbb5ef 100644 --- a/example/lib/domain/dtos/register_param_dto.dart +++ b/example/lib/domain/dtos/register_param_dto.dart @@ -1,23 +1,45 @@ -class RegisterParamDto { - String email; - String phone; - String password; - String confirmPassword; +import 'package:flutter/material.dart'; + +class RegisterParamDto extends ChangeNotifier { + String _email; + String _phone; + String _password; + String _confirmPassword; + + String get email => _email; + String get phone => _phone; + String get password => _password; + String get confirmPassword => _confirmPassword; RegisterParamDto({ - required this.email, - required this.phone, - required this.password, - required this.confirmPassword, - }); + required String email, + required String phone, + required String password, + required String confirmPassword, + }) : _email = email, + _phone = phone, + _password = password, + _confirmPassword = confirmPassword; factory RegisterParamDto.empty() => RegisterParamDto(email: '', password: '', phone: '', confirmPassword: ''); - setEmail(String value) => email = value; + void setEmail(String value) { + _email = value; + notifyListeners(); + } - setPassword(String value) => password = value; + void setPassword(String value) { + _password = value; + notifyListeners(); + } - setConfirmPassword(String value) => confirmPassword = value; + void setConfirmPassword(String value) { + _confirmPassword = value; + notifyListeners(); + } - setPhone(String value) => phone = value; + void setPhone(String value) { + _phone = value; + notifyListeners(); + } } diff --git a/example/lib/presentation/register_page/register_page.dart b/example/lib/presentation/register_page/register_page.dart index 86f6c80..1fcaa5f 100644 --- a/example/lib/presentation/register_page/register_page.dart +++ b/example/lib/presentation/register_page/register_page.dart @@ -101,16 +101,23 @@ class _RegisterPageState extends State { ), ), const SizedBox(height: 12), - ElevatedButton( - onPressed: signIn, - child: const Text('Sign up'), + ListenableBuilder( + listenable: registerParamDto, + builder: (context, child) { + final errors = validator.validate(registerParamDto); + + return ElevatedButton( + onPressed: errors.isEmpty ? signIn : null, + child: const Text('Register'), + ); + }, ), const SizedBox(height: 12), ElevatedButton( onPressed: () { Navigator.pop(context); }, - child: const Text('Sign In'), + child: const Text('Back'), ), const Spacer(), ], diff --git a/example/pubspec.lock b/example/pubspec.lock index 5be00a7..c1ef826 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -79,18 +79,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: @@ -113,7 +113,7 @@ packages: path: ".." relative: true source: path - version: "0.0.1" + version: "0.0.5" matcher: dependency: transitive description: @@ -126,18 +126,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.12.0" path: dependency: transitive description: @@ -195,10 +195,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.0" vector_math: dependency: transitive description: @@ -211,10 +211,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "14.2.4" + version: "14.2.1" sdks: dart: ">=3.4.3 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/example/test/widget_test.dart b/example/test/widget_test.dart deleted file mode 100644 index 092d222..0000000 --- a/example/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:example/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -}