Merge branch 'main' into stable

This commit is contained in:
Lucas.Xu 2023-11-08 14:24:39 +08:00
commit db4057dea2
3 changed files with 49 additions and 30 deletions

View file

@ -15,15 +15,23 @@ Node dividerNode() {
);
}
typedef DividerBlockWrapper = Widget Function(
BuildContext context,
Node node,
Widget child,
);
class DividerBlockComponentBuilder extends BlockComponentBuilder {
DividerBlockComponentBuilder({
super.configuration,
this.lineColor = Colors.grey,
this.height = 10,
this.wrapper,
});
final Color lineColor;
final double height;
final DividerBlockWrapper? wrapper;
@override
BlockComponentWidget build(BlockComponentContext blockComponentContext) {
@ -34,6 +42,7 @@ class DividerBlockComponentBuilder extends BlockComponentBuilder {
configuration: configuration,
lineColor: lineColor,
height: height,
wrapper: wrapper,
showActions: showActions(node),
actionBuilder: (context, state) => actionBuilder(
blockComponentContext,
@ -55,10 +64,12 @@ class DividerBlockComponentWidget extends BlockComponentStatefulWidget {
super.configuration = const BlockComponentConfiguration(),
this.lineColor = Colors.grey,
this.height = 10,
this.wrapper,
});
final Color lineColor;
final double height;
final DividerBlockWrapper? wrapper;
@override
State<DividerBlockComponentWidget> createState() =>
@ -119,6 +130,10 @@ class _DividerBlockComponentWidgetState
);
}
if (widget.wrapper != null) {
child = widget.wrapper!(context, node, child);
}
return child;
}

View file

@ -52,29 +52,31 @@ class MobileToolbar extends StatelessWidget {
if (selection == null) {
return const SizedBox.shrink();
}
return MobileToolbarStyle(
backgroundColor: backgroundColor,
foregroundColor: foregroundColor,
clearDiagonalLineColor: clearDiagonalLineColor,
itemHighlightColor: itemHighlightColor,
itemOutlineColor: itemOutlineColor,
tabbarSelectedBackgroundColor: tabbarSelectedBackgroundColor,
tabbarSelectedForegroundColor: tabbarSelectedForegroundColor,
primaryColor: primaryColor,
onPrimaryColor: onPrimaryColor,
outlineColor: outlineColor,
toolbarHeight: toolbarHeight,
borderRadius: borderRadius,
buttonHeight: buttonHeight,
buttonSpacing: buttonSpacing,
buttonBorderWidth: buttonBorderWidth,
buttonSelectedBorderWidth: buttonSelectedBorderWidth,
child: MobileToolbarWidget(
// Use selection as key to force rebuild toolbar widget when selection changed.
// key: ValueKey(selection),
editorState: editorState,
selection: selection,
toolbarItems: toolbarItems,
return RepaintBoundary(
child: MobileToolbarStyle(
backgroundColor: backgroundColor,
foregroundColor: foregroundColor,
clearDiagonalLineColor: clearDiagonalLineColor,
itemHighlightColor: itemHighlightColor,
itemOutlineColor: itemOutlineColor,
tabbarSelectedBackgroundColor: tabbarSelectedBackgroundColor,
tabbarSelectedForegroundColor: tabbarSelectedForegroundColor,
primaryColor: primaryColor,
onPrimaryColor: onPrimaryColor,
outlineColor: outlineColor,
toolbarHeight: toolbarHeight,
borderRadius: borderRadius,
buttonHeight: buttonHeight,
buttonSpacing: buttonSpacing,
buttonBorderWidth: buttonBorderWidth,
buttonSelectedBorderWidth: buttonSelectedBorderWidth,
child: MobileToolbarWidget(
// Use selection as key to force rebuild toolbar widget when selection changed.
// key: ValueKey(selection),
editorState: editorState,
selection: selection,
toolbarItems: toolbarItems,
),
),
);
},

View file

@ -4,6 +4,8 @@ import 'package:flutter_test/flutter_test.dart';
import '../../../infra/testable_editor.dart';
const _padding = 24.0;
void main() async {
group('indentCommand - widget test indent padding', () {
testWidgets("indent LTR line under LTR line", (tester) async {
@ -17,7 +19,7 @@ void main() async {
final nestedBlock = node.key.currentState!
.unwrapOrNull<NestedBlockComponentStatefulWidgetMixin>();
expect(nestedBlock?.indentPadding.left, 24);
expect(nestedBlock?.indentPadding.left, _padding);
expect(nestedBlock?.indentPadding.right, 0);
await editor.dispose();
@ -34,7 +36,7 @@ void main() async {
final nestedBlock = node.key.currentState!
.unwrapOrNull<NestedBlockComponentStatefulWidgetMixin>();
expect(nestedBlock?.indentPadding.left, 24);
expect(nestedBlock?.indentPadding.left, _padding);
expect(nestedBlock?.indentPadding.right, 0);
await editor.dispose();
@ -55,7 +57,7 @@ void main() async {
.unwrapOrNull<NestedBlockComponentStatefulWidgetMixin>();
expect(nestedBlock?.indentPadding.left, 0);
expect(nestedBlock?.indentPadding.right, 24);
expect(nestedBlock?.indentPadding.right, _padding);
await editor.dispose();
});
@ -75,7 +77,7 @@ void main() async {
.unwrapOrNull<NestedBlockComponentStatefulWidgetMixin>();
expect(nestedBlock?.indentPadding.left, 0);
expect(nestedBlock?.indentPadding.right, 24);
expect(nestedBlock?.indentPadding.right, _padding);
await editor.dispose();
});
@ -95,7 +97,7 @@ void main() async {
.unwrapOrNull<NestedBlockComponentStatefulWidgetMixin>();
expect(nestedBlock?.indentPadding.left, 0);
expect(nestedBlock?.indentPadding.right, 24);
expect(nestedBlock?.indentPadding.right, _padding);
await editor.dispose();
});
@ -120,7 +122,7 @@ void main() async {
.unwrapOrNull<NestedBlockComponentStatefulWidgetMixin>();
expect(nestedBlock?.indentPadding.left, 0);
expect(nestedBlock?.indentPadding.right, 24);
expect(nestedBlock?.indentPadding.right, _padding);
final selection = Selection.single(
path: [0, 0],
@ -134,7 +136,7 @@ void main() async {
final nestedBlockAfter = node.key.currentState!
.unwrapOrNull<NestedBlockComponentStatefulWidgetMixin>();
expect(nestedBlockAfter?.indentPadding.left, 24);
expect(nestedBlockAfter?.indentPadding.left, _padding);
expect(nestedBlockAfter?.indentPadding.right, 0);
await editor.dispose();