|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
/// Used to configure the dialog's look and feel.
|
|
|
|
class QuillDialogTheme with Diagnosticable {
|
|
|
|
const QuillDialogTheme({
|
|
|
|
this.labelTextStyle,
|
|
|
|
this.inputTextStyle,
|
|
|
|
this.dialogBackgroundColor,
|
|
|
|
this.shape,
|
|
|
|
this.buttonStyle,
|
|
|
|
this.linkDialogConstraints,
|
|
|
|
this.imageDialogConstraints,
|
|
|
|
this.isWrappable = false,
|
|
|
|
this.runSpacing = 8.0,
|
|
|
|
}) : assert(runSpacing >= 0);
|
|
|
|
|
|
|
|
///The text style to use for the label shown in the link-input dialog
|
|
|
|
final TextStyle? labelTextStyle;
|
|
|
|
|
|
|
|
///The text style to use for the input text shown in the link-input dialog
|
|
|
|
final TextStyle? inputTextStyle;
|
|
|
|
|
|
|
|
///The background color for the Quill dialog
|
|
|
|
final Color? dialogBackgroundColor;
|
|
|
|
|
|
|
|
/// The shape of this dialog's border.
|
|
|
|
///
|
|
|
|
/// Defines the dialog's [Material.shape].
|
|
|
|
///
|
|
|
|
/// The default shape is a [RoundedRectangleBorder] with a radius of 4.0
|
|
|
|
final ShapeBorder? shape;
|
|
|
|
|
|
|
|
/// Constrains for [LinkStyleDialog].
|
|
|
|
final BoxConstraints? linkDialogConstraints;
|
|
|
|
|
|
|
|
/// Constrains for [EmbedImageDialog].
|
|
|
|
final BoxConstraints? imageDialogConstraints;
|
|
|
|
|
|
|
|
/// Customizes this button's appearance.
|
|
|
|
final ButtonStyle? buttonStyle;
|
|
|
|
|
|
|
|
/// Whether dialog's children are wrappred with [Wrap] instead of [Row].
|
|
|
|
final bool isWrappable;
|
|
|
|
|
|
|
|
/// How much space to place between the runs themselves in the cross axis.
|
|
|
|
///
|
|
|
|
/// Make sense if [isWrappable] is `true`.
|
|
|
|
///
|
|
|
|
/// Defaults to 0.0.
|
|
|
|
final double runSpacing;
|
|
|
|
|
|
|
|
QuillDialogTheme copyWith({
|
|
|
|
TextStyle? labelTextStyle,
|
|
|
|
TextStyle? inputTextStyle,
|
|
|
|
Color? dialogBackgroundColor,
|
|
|
|
ShapeBorder? shape,
|
|
|
|
ButtonStyle? buttonStyle,
|
|
|
|
BoxConstraints? linkDialogConstraints,
|
|
|
|
BoxConstraints? imageDialogConstraints,
|
|
|
|
bool? isWrappable,
|
|
|
|
double? runSpacing,
|
|
|
|
}) {
|
|
|
|
return QuillDialogTheme(
|
|
|
|
labelTextStyle: labelTextStyle ?? this.labelTextStyle,
|
|
|
|
inputTextStyle: inputTextStyle ?? this.inputTextStyle,
|
|
|
|
dialogBackgroundColor:
|
|
|
|
dialogBackgroundColor ?? this.dialogBackgroundColor,
|
|
|
|
shape: shape ?? this.shape,
|
|
|
|
buttonStyle: buttonStyle ?? this.buttonStyle,
|
|
|
|
linkDialogConstraints:
|
|
|
|
linkDialogConstraints ?? this.linkDialogConstraints,
|
|
|
|
imageDialogConstraints:
|
|
|
|
imageDialogConstraints ?? this.imageDialogConstraints,
|
|
|
|
isWrappable: isWrappable ?? this.isWrappable,
|
|
|
|
runSpacing: runSpacing ?? this.runSpacing,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
bool operator ==(Object other) {
|
|
|
|
if (other.runtimeType != runtimeType) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return other is QuillDialogTheme &&
|
|
|
|
other.labelTextStyle == labelTextStyle &&
|
|
|
|
other.inputTextStyle == inputTextStyle &&
|
|
|
|
other.dialogBackgroundColor == dialogBackgroundColor &&
|
|
|
|
other.shape == shape &&
|
|
|
|
other.buttonStyle == buttonStyle &&
|
|
|
|
other.linkDialogConstraints == linkDialogConstraints &&
|
|
|
|
other.imageDialogConstraints == imageDialogConstraints &&
|
|
|
|
other.isWrappable == isWrappable &&
|
|
|
|
other.runSpacing == runSpacing;
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
int get hashCode => Object.hash(
|
|
|
|
labelTextStyle,
|
|
|
|
inputTextStyle,
|
|
|
|
dialogBackgroundColor,
|
|
|
|
shape,
|
|
|
|
buttonStyle,
|
|
|
|
linkDialogConstraints,
|
|
|
|
imageDialogConstraints,
|
|
|
|
isWrappable,
|
|
|
|
runSpacing,
|
|
|
|
);
|
|
|
|
}
|