diff --git a/lib/widgets/didvan/button.dart b/lib/widgets/didvan/button.dart index bed38e0..a3baeba 100644 --- a/lib/widgets/didvan/button.dart +++ b/lib/widgets/didvan/button.dart @@ -8,11 +8,13 @@ class DidvanButton extends StatelessWidget { final VoidCallback? onPressed; final String? title; final ButtonStyleMode style; + final bool enabled; const DidvanButton({ Key? key, this.onPressed, this.title, this.style = ButtonStyleMode.primary, + this.enabled = true, }) : super(key: key); @override @@ -34,7 +36,6 @@ class DidvanButton extends StatelessWidget { break; default: } - return SizedBox( height: 48, width: double.infinity, @@ -46,20 +47,23 @@ class DidvanButton extends StatelessWidget { : BorderSide.none, ), color: backgroundColor, - onPressed: () { - FocusScope.of(context).unfocus(); - onPressed?.call(); - }, - child: _childBuilder(foregroundColor), + disabledColor: Theme.of(context).colorScheme.disabledBackground, + onPressed: !enabled + ? null + : () { + FocusScope.of(context).unfocus(); + onPressed?.call(); + }, + child: _childBuilder(foregroundColor, context), ), ); } - Widget? _childBuilder(Color color) { + Widget? _childBuilder(Color color, context) { if (title != null) { return DidvanText( title!, - color: color, + color: enabled ? color : Theme.of(context).colorScheme.disabledText, ); } } diff --git a/lib/widgets/didvan/scaffold.dart b/lib/widgets/didvan/scaffold.dart index ccafa58..55f7d27 100644 --- a/lib/widgets/didvan/scaffold.dart +++ b/lib/widgets/didvan/scaffold.dart @@ -6,13 +6,13 @@ class DidvanScaffold extends StatelessWidget { final List? slivers; final List? children; final AppBarData appBarData; - final bool hasPadding; + final EdgeInsets padding; const DidvanScaffold({ Key? key, this.slivers, required this.appBarData, - this.hasPadding = true, this.children, + this.padding = const EdgeInsets.symmetric(horizontal: 16), }) : super(key: key); @override @@ -35,7 +35,7 @@ class DidvanScaffold extends StatelessWidget { ), if (children != null) SliverPadding( - padding: const EdgeInsets.symmetric(horizontal: 16), + padding: padding, sliver: SliverList( delegate: SliverChildBuilderDelegate( (context, index) => children![index], diff --git a/lib/widgets/didvan/text_field.dart b/lib/widgets/didvan/text_field.dart index 84f9087..cd13c85 100644 --- a/lib/widgets/didvan/text_field.dart +++ b/lib/widgets/didvan/text_field.dart @@ -15,7 +15,7 @@ class DidvanTextField extends StatefulWidget { final String? hintText; final dynamic initialValue; final bool obsecureText; - final String? Function(String? value)? validator; + final Function(String value)? validator; final TextInputType? textInputType; const DidvanTextField({ Key? key, @@ -84,7 +84,9 @@ class _DidvanTextFieldState extends State { focusNode: _focusNode, controller: _controller, onChanged: _onChanged, - validator: _validator, + validator: (value) { + _validator(value); + }, obscuringCharacter: '*', style: Theme.of(context).textTheme.bodyText1, decoration: InputDecoration( @@ -142,7 +144,7 @@ class _DidvanTextFieldState extends State { Color _fillColor() { if (!widget.enabled) { - return Theme.of(context).colorScheme.secondCTA; + return Theme.of(context).colorScheme.disabledBackground; } if (_focusNode.hasFocus) { return Theme.of(context).colorScheme.focused; @@ -172,15 +174,18 @@ class _DidvanTextFieldState extends State { } void _onChanged(String value) { + setState(() { + _error = null; + }); value = value.toEnglishDigit(); if (widget.onChanged != null) { widget.onChanged!(value); } } - String? _validator(String? value) { + Future _validator(String? value) async { if (widget.validator != null) { - final String? error = widget.validator!(value); + final String? error = await widget.validator!(value!); if (error != null) { setState(() { _error = error;