diff --git a/lib/presentation/auth/auth_screen/diary/diary_edit_screen/bloc/diary_edit_bloc.dart b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart similarity index 100% rename from lib/presentation/auth/auth_screen/diary/diary_edit_screen/bloc/diary_edit_bloc.dart rename to lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart diff --git a/lib/presentation/auth/auth_screen/diary/diary_edit_screen/bloc/diary_edit_event.dart b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_event.dart similarity index 100% rename from lib/presentation/auth/auth_screen/diary/diary_edit_screen/bloc/diary_edit_event.dart rename to lib/presentation/diary/diary_edit_screen/bloc/diary_edit_event.dart diff --git a/lib/presentation/auth/auth_screen/diary/diary_edit_screen/bloc/diary_edit_state.dart b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_state.dart similarity index 100% rename from lib/presentation/auth/auth_screen/diary/diary_edit_screen/bloc/diary_edit_state.dart rename to lib/presentation/diary/diary_edit_screen/bloc/diary_edit_state.dart diff --git a/lib/presentation/auth/auth_screen/diary/diary_edit_screen/diary_edit_screen.dart b/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart similarity index 100% rename from lib/presentation/auth/auth_screen/diary/diary_edit_screen/diary_edit_screen.dart rename to lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart diff --git a/lib/presentation/auth/auth_screen/diary/diary_edit_screen/models/diary_edit_model.dart b/lib/presentation/diary/diary_edit_screen/models/diary_edit_model.dart similarity index 100% rename from lib/presentation/auth/auth_screen/diary/diary_edit_screen/models/diary_edit_model.dart rename to lib/presentation/diary/diary_edit_screen/models/diary_edit_model.dart diff --git a/lib/widgets/custom_edit_drop_down.dart b/lib/widgets/custom_edit_drop_down.dart new file mode 100644 index 00000000..12b98cf3 --- /dev/null +++ b/lib/widgets/custom_edit_drop_down.dart @@ -0,0 +1,134 @@ +import 'package:flutter/material.dart'; + +class CustomDropDown extends StatelessWidget { + CustomDropDown({ + Key? key, + this.alignment, + this.width, + this.focusNode, + this.icon, + this.autofocus = true, + this.textStyle, + this.items, + this.hintText, + this.hintStyle, + this.prefix, + this.prefixConstraints, + this.suffix, + this.suffixConstraints, + this.contentPadding, + this.borderDecoration, + this.fillColor, + this.filled = true, + this.validator, + this.onChanged, + }) : super( + key: key, + ); + + final Alignment? alignment; + + final double? width; + + final FocusNode? focusNode; + + final Widget? icon; + + final bool? autofocus; + + final TextStyle? textStyle; + + final List? items; + + final String? hintText; + + final TextStyle? hintStyle; + + final Widget? prefix; + + final BoxConstraints? prefixConstraints; + + final Widget? suffix; + + final BoxConstraints? suffixConstraints; + + final EdgeInsets? contentPadding; + + final InputBorder? borderDecoration; + + final Color? fillColor; + + final bool? filled; + + final FormFieldValidator? validator; + + final Function(String)? onChanged; + + @override + Widget build(BuildContext context) { + return alignment != null + ? Align( + alignment: alignment ?? Alignment.center, + child: dropDownWidget, + ) + : dropDownWidget; + } + + Widget get dropDownWidget => SizedBox( + width: width ?? double.maxFinite, + child: DropdownButtonFormField( + focusNode: focusNode ?? FocusNode(), + icon: icon, + autofocus: autofocus!, + items: items?.map>((String value) { + return DropdownMenuItem( + value: value, + child: Text( + value, + overflow: TextOverflow.ellipsis, + ), + ); + }).toList(), + decoration: decoration, + validator: validator, + onChanged: (value) { + onChanged!(value.toString()); + }, + ), + ); + InputDecoration get decoration => InputDecoration( + hintText: hintText ?? "", + hintStyle: hintStyle, + prefixIcon: prefix, + prefixIconConstraints: prefixConstraints, + suffixIcon: suffix, + suffixIconConstraints: suffixConstraints, + isDense: true, + contentPadding: contentPadding ?? + EdgeInsets.only( + left: 17, + top: 17, + bottom: 17, + ), + fillColor: fillColor, + filled: filled, + border: borderDecoration ?? + OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + borderSide: BorderSide.none, + ), + enabledBorder: borderDecoration ?? + OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + borderSide: BorderSide.none, + ), + focusedBorder: borderDecoration ?? + OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: BorderSide( + color: Colors.blue, + width: 1, + ), + ), + ); +} diff --git a/lib/widgets/custom_icon_button.dart b/lib/widgets/custom_icon_button.dart new file mode 100644 index 00000000..cdf5b5b5 --- /dev/null +++ b/lib/widgets/custom_icon_button.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; + +class CustomIconButton extends StatelessWidget { + CustomIconButton({ + Key? key, + this.alignment, + this.height, + this.width, + this.padding, + this.decoration, + this.child, + this.onTap, + }) : super( + key: key, + ); + + final Alignment? alignment; + + final double? height; + + final double? width; + + final EdgeInsetsGeometry? padding; + + final BoxDecoration? decoration; + + final Widget? child; + + final VoidCallback? onTap; + + @override + Widget build(BuildContext context) { + return alignment != null + ? Align( + alignment: alignment ?? Alignment.center, + child: iconButtonWidget, + ) + : iconButtonWidget; + } + + Widget get iconButtonWidget => SizedBox( + height: height ?? 0, + width: width ?? 0, + child: IconButton( + padding: EdgeInsets.zero, + icon: Container( + height: height ?? 0, + width: width ?? 0, + padding: padding ?? EdgeInsets.zero, + decoration: decoration ?? + BoxDecoration( + color: Colors.black, + borderRadius: BorderRadius.circular(9), + border: Border.all( + color: Colors.blueGrey, + width: 1, + ), + ), + child: child, + ), + onPressed: onTap, + ), + ); +} + +/// Extension on [CustomIconButton] to facilitate inclusion of all types of border style etc +extension IconButtonStyleHelper on CustomIconButton { + static BoxDecoration get fillBlueA => BoxDecoration( + color: Colors.blue, + borderRadius: BorderRadius.circular(14), + ); +}