aboutsummaryrefslogtreecommitdiff
path: root/lib/screens/register_screen.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/screens/register_screen.dart')
-rw-r--r--lib/screens/register_screen.dart40
1 files changed, 20 insertions, 20 deletions
diff --git a/lib/screens/register_screen.dart b/lib/screens/register_screen.dart
index 0ba0cf9..7ddb252 100644
--- a/lib/screens/register_screen.dart
+++ b/lib/screens/register_screen.dart
@@ -17,13 +17,12 @@ class RegisterScreen extends StatefulWidget {
}
class _RegisterScreenState extends State<RegisterScreen> {
- bool isLoading = false;
+ final ValueNotifier<bool> _loadingNotifier = ValueNotifier<bool>(false);
+ final ValueNotifier<XFile?> _avatarNotifier = ValueNotifier<XFile?>(null);
final padding = 16.0;
final spacer = const SizedBox(height: 16.0);
- XFile? _avatar;
-
// TextField controllers
late TextEditingController _nameController;
late TextEditingController _emailController;
@@ -40,7 +39,7 @@ class _RegisterScreenState extends State<RegisterScreen> {
}
bool validateForm() {
- if (_formKey.currentState!.validate() && _avatar != null) {
+ if (_formKey.currentState!.validate() && _avatarNotifier.value != null) {
return true;
}
return false;
@@ -72,13 +71,15 @@ class _RegisterScreenState extends State<RegisterScreen> {
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
- AvatarPicker(
- avatar: _avatar,
- onAvatarPicked: (avatar) {
- setState(() {
- _avatar = avatar;
- });
- },
+ ValueListenableBuilder(
+ valueListenable: _avatarNotifier,
+ builder: (context, value, child) =>
+ AvatarPicker(
+ avatar: _avatarNotifier.value,
+ onAvatarPicked: (avatar) {
+ _avatarNotifier.value = avatar;
+ },
+ ),
),
spacer,
TextFormField(
@@ -147,7 +148,11 @@ class _RegisterScreenState extends State<RegisterScreen> {
],
),
),
- isLoading ? const LoadingModal() : const SizedBox.shrink(),
+ ValueListenableBuilder(
+ valueListenable: _loadingNotifier,
+ builder: (context, value, child) =>
+ value ? const LoadingModal() : const SizedBox.shrink(),
+ ),
],
),
)
@@ -157,22 +162,17 @@ class _RegisterScreenState extends State<RegisterScreen> {
}
void onRegisterClicked(BuildContext context) {
- setState(() {
- isLoading = true;
- });
-
+ _loadingNotifier.value = true;
if (validateForm()) {
Auth()
.createUserWithEmailAndPassword(
email: _emailController.text,
password: _passwordController.text,
displayName: _nameController.text,
- avatar: File(_avatar!.path),
+ avatar: File(_avatarNotifier.value!.path),
)
.then((result) {
- setState(() {
- isLoading = false;
- });
+ _loadingNotifier.value = false;
result.fold((user) {
Navigator.of(context).pushReplacementNamed('/login');
}, (error) {