pull/1566/head
Ellet 1 year ago
parent 0d39d9d4e9
commit d67bd71ca4
No known key found for this signature in database
GPG Key ID: C488CC70BBCEF0D1
  1. 10
      example/pubspec.yaml
  2. 2
      lib/flutter_quill.dart
  3. 4
      lib/src/models/config/editor/configurations.dart
  4. 4
      lib/src/models/config/toolbar/simple_toolbar_configurations.dart
  5. 2
      lib/src/widgets/editor/editor.dart
  6. 8
      lib/src/widgets/others/text_block.dart
  7. 2
      lib/src/widgets/raw_editor/raw_editor_render_object.dart
  8. 4
      lib/src/widgets/raw_editor/raw_editor_state.dart
  9. 514
      lib/src/widgets/toolbar/buttons/select_alignment_old_buttons.dart

@ -24,10 +24,7 @@ dependencies:
cross_file: ^0.3.3+6
cached_network_image: ^3.3.0
gal_linux:
git:
url: https://github.com/freshtechtips/gal-linux.git
ref: main
gal_linux: ^0.0.1-dev
# Bloc libraries
bloc: ^8.1.2
@ -60,11 +57,6 @@ dependency_overrides:
quill_html_converter:
path: ../packages/quill_html_converter
gal:
git:
url: https://github.com/natsuk4ze/gal.git
ref: plugin_platform_interface
dev_dependencies:
flutter_test:

@ -22,10 +22,10 @@ export 'src/models/structs/vertical_spacing.dart';
export 'src/models/themes/quill_dialog_theme.dart';
export 'src/models/themes/quill_icon_theme.dart';
export 'src/utils/embeds.dart';
export 'src/widgets/editor/editor.dart';
export 'src/widgets/others/controller.dart';
export 'src/widgets/others/cursor.dart';
export 'src/widgets/others/default_styles.dart';
export 'src/widgets/editor/editor.dart';
export 'src/widgets/others/embeds.dart';
export 'src/widgets/others/link.dart'
show LinkActionPickerDelegate, LinkMenuAction;

@ -6,11 +6,11 @@ import 'package:flutter/material.dart'
import 'package:flutter/widgets.dart';
import 'package:meta/meta.dart' show experimental;
import '../../../widgets/editor/editor.dart';
import '../../../widgets/editor/editor_builder.dart';
import '../../../widgets/others/controller.dart';
import '../../../widgets/others/default_styles.dart';
import '../../../widgets/others/delegate.dart';
import '../../../widgets/editor/editor.dart';
import '../../../widgets/editor/editor_builder.dart';
import '../../../widgets/others/embeds.dart';
import '../../../widgets/others/link.dart';
import '../../../widgets/raw_editor/raw_editor.dart';

@ -15,8 +15,8 @@ import 'buttons/font_family_configurations.dart';
import 'buttons/font_size_configurations.dart';
import 'buttons/history_configurations.dart';
import 'buttons/indent_configurations.dart';
import 'buttons/link_style_configurations.dart';
import 'buttons/link_style2_configurations.dart';
import 'buttons/link_style_configurations.dart';
import 'buttons/search_configurations.dart';
import 'buttons/select_alignment_configurations.dart';
import 'buttons/select_header_style_configurations.dart';
@ -33,8 +33,8 @@ export 'buttons/font_family_configurations.dart';
export 'buttons/font_size_configurations.dart';
export 'buttons/history_configurations.dart';
export 'buttons/indent_configurations.dart';
export 'buttons/link_style_configurations.dart';
export 'buttons/link_style2_configurations.dart';
export 'buttons/link_style_configurations.dart';
export 'buttons/search_configurations.dart';
export 'buttons/select_alignment_configurations.dart';
export 'buttons/select_header_style_configurations.dart';

@ -21,8 +21,8 @@ import '../others/cursor.dart';
import '../others/delegate.dart';
import '../others/embeds.dart';
import '../others/float_cursor.dart';
import '../raw_editor/raw_editor.dart';
import '../others/text_selection.dart';
import '../raw_editor/raw_editor.dart';
import '../utils/provider.dart';
import 'editor_builder.dart';

@ -7,16 +7,16 @@ import '../../models/documents/nodes/block.dart';
import '../../models/documents/nodes/line.dart';
import '../../models/structs/vertical_spacing.dart';
import '../../utils/delta.dart';
import '../editor/editor.dart';
import '../style_widgets/bullet_point.dart';
import '../style_widgets/checkbox_point.dart';
import '../style_widgets/number_point.dart';
import 'box.dart';
import 'controller.dart';
import 'cursor.dart';
import 'default_styles.dart';
import 'delegate.dart';
import '../editor/editor.dart';
import 'link.dart';
import '../style_widgets/bullet_point.dart';
import '../style_widgets/checkbox_point.dart';
import '../style_widgets/number_point.dart';
import 'text_line.dart';
import 'text_selection.dart';

@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart' show ViewportOffset;
import '../../models/documents/document.dart';
import '../others/cursor.dart';
import '../editor/editor.dart';
import '../others/cursor.dart';
class QuilRawEditorMultiChildRenderObject extends MultiChildRenderObjectWidget {
const QuilRawEditorMultiChildRenderObject({

@ -33,17 +33,17 @@ import '../../utils/cast.dart';
import '../../utils/delta.dart';
import '../../utils/embeds.dart';
import '../../utils/platform.dart';
import '../editor/editor.dart';
import '../others/controller.dart';
import '../others/cursor.dart';
import '../others/default_styles.dart';
import '../editor/editor.dart';
import '../others/keyboard_listener.dart';
import '../others/link.dart';
import '../others/proxy.dart';
import 'quill_single_child_scroll_view.dart';
import '../others/text_block.dart';
import '../others/text_line.dart';
import '../others/text_selection.dart';
import 'quill_single_child_scroll_view.dart';
import 'raw_editor.dart';
import 'raw_editor_actions.dart';
import 'raw_editor_render_object.dart';

@ -1,283 +1,283 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
// import 'package:flutter/foundation.dart';
// import 'package:flutter/material.dart';
import '../../../extensions/quill_provider.dart';
import '../../../l10n/extensions/localizations.dart';
import '../../../models/documents/attribute.dart';
import '../../../models/documents/style.dart';
import '../../../models/themes/quill_icon_theme.dart';
import '../../../utils/widgets.dart';
import '../../others/controller.dart';
import '../base_toolbar.dart';
// import '../../../extensions/quill_provider.dart';
// import '../../../l10n/extensions/localizations.dart';
// import '../../../models/documents/attribute.dart';
// import '../../../models/documents/style.dart';
// import '../../../models/themes/quill_icon_theme.dart';
// import '../../../utils/widgets.dart';
// import '../../others/controller.dart';
// import '../base_toolbar.dart';
@Deprecated('This button has been deprecated, use')
class QuillToolbarSelectAlignmentOldButtons extends StatefulWidget {
const QuillToolbarSelectAlignmentOldButtons({
required this.controller,
required this.options,
this.showLeftAlignment,
this.showCenterAlignment,
this.showRightAlignment,
this.showJustifyAlignment,
this.padding,
super.key,
});
// @Deprecated('This button has been deprecated, use')
// class QuillToolbarSelectAlignmentOldButtons extends StatefulWidget {
// const QuillToolbarSelectAlignmentOldButtons({
// required this.controller,
// required this.options,
// this.showLeftAlignment,
// this.showCenterAlignment,
// this.showRightAlignment,
// this.showJustifyAlignment,
// this.padding,
// super.key,
// });
final QuillController controller;
final QuillToolbarSelectAlignmentButtonOptions options;
// final QuillController controller;
// final QuillToolbarSelectAlignmentButtonOptions options;
final bool? showLeftAlignment;
final bool? showCenterAlignment;
final bool? showRightAlignment;
final bool? showJustifyAlignment;
final EdgeInsetsGeometry? padding;
// final bool? showLeftAlignment;
// final bool? showCenterAlignment;
// final bool? showRightAlignment;
// final bool? showJustifyAlignment;
// final EdgeInsetsGeometry? padding;
@override
QuillToolbarSelectAlignmentOldButtonsState createState() =>
QuillToolbarSelectAlignmentOldButtonsState();
}
// @override
// QuillToolbarSelectAlignmentOldButtonsState createState() =>
// QuillToolbarSelectAlignmentOldButtonsState();
// }
class QuillToolbarSelectAlignmentOldButtonsState
extends State<QuillToolbarSelectAlignmentOldButtons> {
Attribute? _value;
// class QuillToolbarSelectAlignmentOldButtonsState
// extends State<QuillToolbarSelectAlignmentOldButtons> {
// Attribute? _value;
Style get _selectionStyle => controller.getSelectionStyle();
// Style get _selectionStyle => controller.getSelectionStyle();
@override
void initState() {
super.initState();
setState(() {
_value = _selectionStyle.attributes[Attribute.align.key] ??
Attribute.leftAlignment;
});
controller.addListener(_didChangeEditingValue);
}
// @override
// void initState() {
// super.initState();
// setState(() {
// _value = _selectionStyle.attributes[Attribute.align.key] ??
// Attribute.leftAlignment;
// });
// controller.addListener(_didChangeEditingValue);
// }
QuillToolbarSelectAlignmentButtonOptions get options {
return widget.options;
}
// QuillToolbarSelectAlignmentButtonOptions get options {
// return widget.options;
// }
QuillController get controller {
return widget.controller;
}
// QuillController get controller {
// return widget.controller;
// }
double get _iconSize {
final baseFontSize = baseButtonExtraOptions.globalIconSize;
final iconSize = options.iconSize;
return iconSize ?? baseFontSize;
}
// double get _iconSize {
// final baseFontSize = baseButtonExtraOptions.globalIconSize;
// final iconSize = options.iconSize;
// return iconSize ?? baseFontSize;
// }
double get _iconButtonFactor {
final baseIconFactor = baseButtonExtraOptions.globalIconButtonFactor;
final iconButtonFactor = options.iconButtonFactor;
return iconButtonFactor ?? baseIconFactor;
}
// double get _iconButtonFactor {
// final baseIconFactor = baseButtonExtraOptions.globalIconButtonFactor;
// final iconButtonFactor = options.iconButtonFactor;
// return iconButtonFactor ?? baseIconFactor;
// }
VoidCallback? get _afterButtonPressed {
return options.afterButtonPressed ??
baseButtonExtraOptions.afterButtonPressed;
}
// VoidCallback? get _afterButtonPressed {
// return options.afterButtonPressed ??
// baseButtonExtraOptions.afterButtonPressed;
// }
QuillIconTheme? get _iconTheme {
return options.iconTheme ?? baseButtonExtraOptions.iconTheme;
}
// QuillIconTheme? get _iconTheme {
// return options.iconTheme ?? baseButtonExtraOptions.iconTheme;
// }
QuillToolbarBaseButtonOptions get baseButtonExtraOptions {
return context.requireQuillToolbarBaseButtonOptions;
}
// QuillToolbarBaseButtonOptions get baseButtonExtraOptions {
// return context.requireQuillToolbarBaseButtonOptions;
// }
QuillSelectAlignmentValues<IconData> get _iconsData {
final iconsData = options.iconsData;
if (iconsData != null) {
return iconsData;
}
final baseIconData = baseButtonExtraOptions.iconData;
if (baseIconData != null) {
return QuillSelectAlignmentValues(
leftAlignment: baseIconData,
centerAlignment: baseIconData,
rightAlignment: baseIconData,
justifyAlignment: baseIconData,
);
}
return const QuillSelectAlignmentValues(
leftAlignment: Icons.format_align_left,
centerAlignment: Icons.format_align_center,
rightAlignment: Icons.format_align_right,
justifyAlignment: Icons.format_align_justify,
);
}
// QuillSelectAlignmentValues<IconData> get _iconsData {
// final iconsData = options.iconsData;
// if (iconsData != null) {
// return iconsData;
// }
// final baseIconData = baseButtonExtraOptions.iconData;
// if (baseIconData != null) {
// return QuillSelectAlignmentValues(
// leftAlignment: baseIconData,
// centerAlignment: baseIconData,
// rightAlignment: baseIconData,
// justifyAlignment: baseIconData,
// );
// }
// return const QuillSelectAlignmentValues(
// leftAlignment: Icons.format_align_left,
// centerAlignment: Icons.format_align_center,
// rightAlignment: Icons.format_align_right,
// justifyAlignment: Icons.format_align_justify,
// );
// }
QuillSelectAlignmentValues<String> get _tooltips {
final tooltips = options.tooltips;
if (tooltips != null) {
return tooltips;
}
final baseToolTip = baseButtonExtraOptions.tooltip;
if (baseToolTip != null) {
return QuillSelectAlignmentValues(
leftAlignment: baseToolTip,
centerAlignment: baseToolTip,
rightAlignment: baseToolTip,
justifyAlignment: baseToolTip,
);
}
return QuillSelectAlignmentValues(
leftAlignment: context.loc.alignLeft,
centerAlignment: context.loc.alignCenter,
rightAlignment: context.loc.alignRight,
justifyAlignment: context.loc.justifyWinWidth,
);
}
// QuillSelectAlignmentValues<String> get _tooltips {
// final tooltips = options.tooltips;
// if (tooltips != null) {
// return tooltips;
// }
// final baseToolTip = baseButtonExtraOptions.tooltip;
// if (baseToolTip != null) {
// return QuillSelectAlignmentValues(
// leftAlignment: baseToolTip,
// centerAlignment: baseToolTip,
// rightAlignment: baseToolTip,
// justifyAlignment: baseToolTip,
// );
// }
// return QuillSelectAlignmentValues(
// leftAlignment: context.loc.alignLeft,
// centerAlignment: context.loc.alignCenter,
// rightAlignment: context.loc.alignRight,
// justifyAlignment: context.loc.justifyWinWidth,
// );
// }
void _didChangeEditingValue() {
setState(() {
_value = _selectionStyle.attributes[Attribute.align.key] ??
Attribute.leftAlignment;
});
}
// void _didChangeEditingValue() {
// setState(() {
// _value = _selectionStyle.attributes[Attribute.align.key] ??
// Attribute.leftAlignment;
// });
// }
@override
void didUpdateWidget(
covariant QuillToolbarSelectAlignmentOldButtons oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.controller != controller) {
oldWidget.controller.removeListener(_didChangeEditingValue);
controller.addListener(_didChangeEditingValue);
_value = _selectionStyle.attributes[Attribute.align.key] ??
Attribute.leftAlignment;
}
}
// @override
// void didUpdateWidget(
// covariant QuillToolbarSelectAlignmentOldButtons oldWidget) {
// super.didUpdateWidget(oldWidget);
// if (oldWidget.controller != controller) {
// oldWidget.controller.removeListener(_didChangeEditingValue);
// controller.addListener(_didChangeEditingValue);
// _value = _selectionStyle.attributes[Attribute.align.key] ??
// Attribute.leftAlignment;
// }
// }
@override
void dispose() {
controller.removeListener(_didChangeEditingValue);
super.dispose();
}
// @override
// void dispose() {
// controller.removeListener(_didChangeEditingValue);
// super.dispose();
// }
@override
Widget build(BuildContext context) {
final valueToText = <Attribute, String>{
if (widget.showLeftAlignment!)
Attribute.leftAlignment: Attribute.leftAlignment.value!,
if (widget.showCenterAlignment!)
Attribute.centerAlignment: Attribute.centerAlignment.value!,
if (widget.showRightAlignment!)
Attribute.rightAlignment: Attribute.rightAlignment.value!,
if (widget.showJustifyAlignment!)
Attribute.justifyAlignment: Attribute.justifyAlignment.value!,
};
// @override
// Widget build(BuildContext context) {
// final valueToText = <Attribute, String>{
// if (widget.showLeftAlignment!)
// Attribute.leftAlignment: Attribute.leftAlignment.value!,
// if (widget.showCenterAlignment!)
// Attribute.centerAlignment: Attribute.centerAlignment.value!,
// if (widget.showRightAlignment!)
// Attribute.rightAlignment: Attribute.rightAlignment.value!,
// if (widget.showJustifyAlignment!)
// Attribute.justifyAlignment: Attribute.justifyAlignment.value!,
// };
final valueAttribute = <Attribute>[
if (widget.showLeftAlignment!) Attribute.leftAlignment,
if (widget.showCenterAlignment!) Attribute.centerAlignment,
if (widget.showRightAlignment!) Attribute.rightAlignment,
if (widget.showJustifyAlignment!) Attribute.justifyAlignment
];
final valueString = <String>[
if (widget.showLeftAlignment!) Attribute.leftAlignment.value!,
if (widget.showCenterAlignment!) Attribute.centerAlignment.value!,
if (widget.showRightAlignment!) Attribute.rightAlignment.value!,
if (widget.showJustifyAlignment!) Attribute.justifyAlignment.value!,
];
// final _valueToButtons = <Attribute, ToolbarButtons>{
// if (widget.showLeftAlignment!)
// Attribute.leftAlignment: ToolbarButtons.leftAlignment,
// if (widget.showCenterAlignment!)
// Attribute.centerAlignment: ToolbarButtons.centerAlignment,
// if (widget.showRightAlignment!)
// Attribute.rightAlignment: ToolbarButtons.rightAlignment,
// if (widget.showJustifyAlignment!)
// Attribute.justifyAlignment: ToolbarButtons.justifyAlignment,
// };
// final valueAttribute = <Attribute>[
// if (widget.showLeftAlignment!) Attribute.leftAlignment,
// if (widget.showCenterAlignment!) Attribute.centerAlignment,
// if (widget.showRightAlignment!) Attribute.rightAlignment,
// if (widget.showJustifyAlignment!) Attribute.justifyAlignment
// ];
// final valueString = <String>[
// if (widget.showLeftAlignment!) Attribute.leftAlignment.value!,
// if (widget.showCenterAlignment!) Attribute.centerAlignment.value!,
// if (widget.showRightAlignment!) Attribute.rightAlignment.value!,
// if (widget.showJustifyAlignment!) Attribute.justifyAlignment.value!,
// ];
// // final _valueToButtons = <Attribute, ToolbarButtons>{
// // if (widget.showLeftAlignment!)
// // Attribute.leftAlignment: ToolbarButtons.leftAlignment,
// // if (widget.showCenterAlignment!)
// // Attribute.centerAlignment: ToolbarButtons.centerAlignment,
// // if (widget.showRightAlignment!)
// // Attribute.rightAlignment: ToolbarButtons.rightAlignment,
// // if (widget.showJustifyAlignment!)
// // Attribute.justifyAlignment: ToolbarButtons.justifyAlignment,
// // };
final buttonCount = ((widget.showLeftAlignment!) ? 1 : 0) +
((widget.showCenterAlignment!) ? 1 : 0) +
((widget.showRightAlignment!) ? 1 : 0) +
((widget.showJustifyAlignment!) ? 1 : 0);
// final buttonCount = ((widget.showLeftAlignment!) ? 1 : 0) +
// ((widget.showCenterAlignment!) ? 1 : 0) +
// ((widget.showRightAlignment!) ? 1 : 0) +
// ((widget.showJustifyAlignment!) ? 1 : 0);
final childBuilder =
options.childBuilder ?? baseButtonExtraOptions.childBuilder;
// final childBuilder =
// options.childBuilder ?? baseButtonExtraOptions.childBuilder;
void sharedOnPressed(int index) {
valueAttribute[index] == Attribute.leftAlignment
? controller.formatSelection(
Attribute.clone(Attribute.align, null),
)
: controller.formatSelection(valueAttribute[index]);
_afterButtonPressed?.call();
}
// void sharedOnPressed(int index) {
// valueAttribute[index] == Attribute.leftAlignment
// ? controller.formatSelection(
// Attribute.clone(Attribute.align, null),
// )
// : controller.formatSelection(valueAttribute[index]);
// _afterButtonPressed?.call();
// }
return Row(
mainAxisSize: MainAxisSize.min,
children: List.generate(buttonCount, (index) {
if (childBuilder != null) {
return childBuilder(
QuillToolbarSelectAlignmentButtonOptions(
afterButtonPressed: _afterButtonPressed,
iconSize: _iconSize,
iconButtonFactor: _iconButtonFactor,
iconTheme: _iconTheme,
tooltips: _tooltips,
iconsData: _iconsData,
),
QuillToolbarSelectAlignmentButtonExtraOptions(
context: context,
controller: controller,
onPressed: () => sharedOnPressed(index),
),
);
}
final theme = Theme.of(context);
return Padding(
padding: widget.padding ??
const EdgeInsets.symmetric(horizontal: !kIsWeb ? 1.0 : 5.0),
child: ConstrainedBox(
constraints: BoxConstraints.tightFor(
width: _iconSize * _iconButtonFactor,
height: _iconSize * _iconButtonFactor,
),
child: UtilityWidgets.maybeTooltip(
message: valueString[index] == Attribute.leftAlignment.value
? _tooltips.leftAlignment
: valueString[index] == Attribute.centerAlignment.value
? _tooltips.centerAlignment
: valueString[index] == Attribute.rightAlignment.value
? _tooltips.rightAlignment
: _tooltips.justifyAlignment,
child: RawMaterialButton(
hoverElevation: 0,
highlightElevation: 0,
elevation: 0,
visualDensity: VisualDensity.compact,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(_iconTheme?.borderRadius ?? 2)),
fillColor: valueToText[_value] == valueString[index]
? (_iconTheme?.iconSelectedFillColor ?? theme.primaryColor)
: (_iconTheme?.iconUnselectedFillColor ??
theme.canvasColor),
onPressed: () => sharedOnPressed(index),
child: Icon(
valueString[index] == Attribute.leftAlignment.value
? _iconsData.leftAlignment
: valueString[index] == Attribute.centerAlignment.value
? _iconsData.centerAlignment
: valueString[index] == Attribute.rightAlignment.value
? _iconsData.rightAlignment
: _iconsData.justifyAlignment,
size: _iconSize,
color: valueToText[_value] == valueString[index]
? (_iconTheme?.iconSelectedColor ??
theme.primaryIconTheme.color)
: (_iconTheme?.iconUnselectedColor ??
theme.iconTheme.color),
),
),
),
),
);
}),
);
}
}
// return Row(
// mainAxisSize: MainAxisSize.min,
// children: List.generate(buttonCount, (index) {
// if (childBuilder != null) {
// return childBuilder(
// QuillToolbarSelectAlignmentButtonOptions(
// afterButtonPressed: _afterButtonPressed,
// iconSize: _iconSize,
// iconButtonFactor: _iconButtonFactor,
// iconTheme: _iconTheme,
// tooltips: _tooltips,
// iconsData: _iconsData,
// ),
// QuillToolbarSelectAlignmentButtonExtraOptions(
// context: context,
// controller: controller,
// onPressed: () => sharedOnPressed(index),
// ),
// );
// }
// final theme = Theme.of(context);
// return Padding(
// padding: widget.padding ??
// const EdgeInsets.symmetric(horizontal: !kIsWeb ? 1.0 : 5.0),
// child: ConstrainedBox(
// constraints: BoxConstraints.tightFor(
// width: _iconSize * _iconButtonFactor,
// height: _iconSize * _iconButtonFactor,
// ),
// child: UtilityWidgets.maybeTooltip(
// message: valueString[index] == Attribute.leftAlignment.value
// ? _tooltips.leftAlignment
// : valueString[index] == Attribute.centerAlignment.value
// ? _tooltips.centerAlignment
// : valueString[index] == Attribute.rightAlignment.value
// ? _tooltips.rightAlignment
// : _tooltips.justifyAlignment,
// child: RawMaterialButton(
// hoverElevation: 0,
// highlightElevation: 0,
// elevation: 0,
// visualDensity: VisualDensity.compact,
// shape: RoundedRectangleBorder(
// borderRadius:
// BorderRadius.circular(_iconTheme?.borderRadius ?? 2)),
// fillColor: valueToText[_value] == valueString[index]
// ? (_iconTheme?.iconSelectedFillColor ?? theme.primaryColor)
// : (_iconTheme?.iconUnselectedFillColor ??
// theme.canvasColor),
// onPressed: () => sharedOnPressed(index),
// child: Icon(
// valueString[index] == Attribute.leftAlignment.value
// ? _iconsData.leftAlignment
// : valueString[index] == Attribute.centerAlignment.value
// ? _iconsData.centerAlignment
// : valueString[index] == Attribute.rightAlignment.value
// ? _iconsData.rightAlignment
// : _iconsData.justifyAlignment,
// size: _iconSize,
// color: valueToText[_value] == valueString[index]
// ? (_iconTheme?.iconSelectedColor ??
// theme.primaryIconTheme.color)
// : (_iconTheme?.iconUnselectedColor ??
// theme.iconTheme.color),
// ),
// ),
// ),
// ),
// );
// }),
// );
// }
// }

Loading…
Cancel
Save