Fix little bugs

pull/1467/head
Ahmed Hnewa 2 years ago
parent 16aa851c04
commit 9ceee33523
No known key found for this signature in database
GPG Key ID: C488CC70BBCEF0D1
  1. 2
      lib/src/models/config/toolbar/base_configurations.dart
  2. 62
      lib/src/widgets/toolbar/base_toolbar.dart
  3. 59
      lib/src/widgets/utils/provider.dart

@ -59,5 +59,5 @@ class QuillBaseToolbarConfigurations extends Equatable {
final Decoration? decoration; final Decoration? decoration;
@override @override
List<Object?> get props => throw UnimplementedError(); List<Object?> get props => [];
} }

@ -1,7 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:i18n_extension/i18n_widget.dart'; import 'package:i18n_extension/i18n_widget.dart';
import '../../../flutter_quill.dart' show defaultToolbarSize; import '../../../flutter_quill.dart'
show QuillBaseToolbarProvider, defaultToolbarSize;
import '../../models/config/toolbar/base_configurations.dart'; import '../../models/config/toolbar/base_configurations.dart';
import '../../utils/extensions/build_context.dart'; import '../../utils/extensions/build_context.dart';
import 'buttons/arrow_indicated_list.dart'; import 'buttons/arrow_indicated_list.dart';
@ -50,34 +51,39 @@ class QuillBaseToolbar extends StatelessWidget implements PreferredSizeWidget {
final toolbarSize = configurations.toolbarSize; final toolbarSize = configurations.toolbarSize;
return I18n( return I18n(
initialLocale: context.quillSharedConfigurations?.locale, initialLocale: context.quillSharedConfigurations?.locale,
child: Builder( child: QuillBaseToolbarProvider(
builder: (context) { toolbarConfigurations: configurations,
if (configurations.multiRowsDisplay) { child: Builder(
return Wrap( builder: (context) {
direction: configurations.axis, if (configurations.multiRowsDisplay) {
alignment: configurations.toolbarIconAlignment, return Wrap(
crossAxisAlignment: configurations.toolbarIconCrossAlignment, direction: configurations.axis,
runSpacing: 4, alignment: configurations.toolbarIconAlignment,
spacing: configurations.toolbarSectionSpacing, crossAxisAlignment: configurations.toolbarIconCrossAlignment,
children: configurations.childrenBuilder(context), runSpacing: 4,
spacing: configurations.toolbarSectionSpacing,
children: configurations.childrenBuilder(context),
);
}
return Container(
decoration: configurations.decoration ??
BoxDecoration(
color:
configurations.color ?? Theme.of(context).canvasColor,
),
constraints: BoxConstraints.tightFor(
height:
configurations.axis == Axis.horizontal ? toolbarSize : null,
width:
configurations.axis == Axis.vertical ? toolbarSize : null,
),
child: QuillToolbarArrowIndicatedButtonList(
axis: configurations.axis,
buttons: configurations.childrenBuilder(context),
),
); );
} },
return Container( ),
decoration: configurations.decoration ??
BoxDecoration(
color: configurations.color ?? Theme.of(context).canvasColor,
),
constraints: BoxConstraints.tightFor(
height:
configurations.axis == Axis.horizontal ? toolbarSize : null,
width: configurations.axis == Axis.vertical ? toolbarSize : null,
),
child: QuillToolbarArrowIndicatedButtonList(
axis: configurations.axis,
buttons: configurations.childrenBuilder(context),
),
);
},
), ),
); );
} }

@ -3,6 +3,7 @@ import 'package:flutter/widgets.dart'
show BuildContext, InheritedWidget, Widget; show BuildContext, InheritedWidget, Widget;
import '../../models/config/quill_configurations.dart'; import '../../models/config/quill_configurations.dart';
import '../../models/config/toolbar/base_configurations.dart';
class QuillProvider extends InheritedWidget { class QuillProvider extends InheritedWidget {
const QuillProvider({ const QuillProvider({
@ -118,6 +119,64 @@ class QuillToolbarProvider extends InheritedWidget {
} }
} }
// Not really needed
class QuillBaseToolbarProvider extends InheritedWidget {
const QuillBaseToolbarProvider({
required super.child,
required this.toolbarConfigurations,
});
/// The configurations for the toolbar widget of flutter quill
final QuillBaseToolbarConfigurations toolbarConfigurations;
@override
bool updateShouldNotify(covariant QuillBaseToolbarProvider oldWidget) {
return oldWidget.toolbarConfigurations != toolbarConfigurations;
}
static QuillBaseToolbarProvider? of(BuildContext context) {
/// The configurations for the quill editor widget of flutter quill
return context
.dependOnInheritedWidgetOfExactType<QuillBaseToolbarProvider>();
}
static QuillBaseToolbarProvider ofNotNull(BuildContext context) {
final provider = of(context);
if (provider == null) {
if (kDebugMode) {
debugPrint(
'The quill toolbar provider must be provided in the widget tree.',
);
}
throw ArgumentError.checkNotNull(
'You are using a widget in the Flutter quill library that require '
'The Quill toolbar provider widget to be in the parent widget tree '
'because '
'The provider is $provider. Please make sure to wrap this widget'
' with'
' QuillProvider widget. '
'You might using QuillToolbar so make sure to'
' wrap them with the quill provider widget and setup the required '
'configurations',
'QuillProvider',
);
}
return provider;
}
/// To pass the [QuillBaseToolbarConfigurations] instance as value
/// instead of creating new widget
static QuillBaseToolbarProvider value({
required QuillBaseToolbarConfigurations value,
required Widget child,
}) {
return QuillBaseToolbarProvider(
toolbarConfigurations: value,
child: child,
);
}
}
class QuillEditorProvider extends InheritedWidget { class QuillEditorProvider extends InheritedWidget {
const QuillEditorProvider({ const QuillEditorProvider({
required super.child, required super.child,

Loading…
Cancel
Save