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. 12
      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;
@override
List<Object?> get props => throw UnimplementedError();
List<Object?> get props => [];
}

@ -1,7 +1,8 @@
import 'package:flutter/material.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 '../../utils/extensions/build_context.dart';
import 'buttons/arrow_indicated_list.dart';
@ -50,6 +51,8 @@ class QuillBaseToolbar extends StatelessWidget implements PreferredSizeWidget {
final toolbarSize = configurations.toolbarSize;
return I18n(
initialLocale: context.quillSharedConfigurations?.locale,
child: QuillBaseToolbarProvider(
toolbarConfigurations: configurations,
child: Builder(
builder: (context) {
if (configurations.multiRowsDisplay) {
@ -65,12 +68,14 @@ class QuillBaseToolbar extends StatelessWidget implements PreferredSizeWidget {
return Container(
decoration: configurations.decoration ??
BoxDecoration(
color: configurations.color ?? Theme.of(context).canvasColor,
color:
configurations.color ?? Theme.of(context).canvasColor,
),
constraints: BoxConstraints.tightFor(
height:
configurations.axis == Axis.horizontal ? toolbarSize : null,
width: configurations.axis == Axis.vertical ? toolbarSize : null,
width:
configurations.axis == Axis.vertical ? toolbarSize : null,
),
child: QuillToolbarArrowIndicatedButtonList(
axis: configurations.axis,
@ -79,6 +84,7 @@ class QuillBaseToolbar extends StatelessWidget implements PreferredSizeWidget {
);
},
),
),
);
}
}

@ -3,6 +3,7 @@ import 'package:flutter/widgets.dart'
show BuildContext, InheritedWidget, Widget;
import '../../models/config/quill_configurations.dart';
import '../../models/config/toolbar/base_configurations.dart';
class QuillProvider extends InheritedWidget {
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 {
const QuillEditorProvider({
required super.child,

Loading…
Cancel
Save