chore: add extension for themedata

This commit is contained in:
Lucas.Xu 2022-10-25 22:15:31 +08:00
parent 6a853036a5
commit 8656cfeb1e
6 changed files with 20 additions and 5 deletions

View File

@ -0,0 +1,10 @@
import 'package:flutter/material.dart';
extension ThemeExtension on ThemeData {
T? extensionOrNull<T>() {
if (extensions.containsKey(T)) {
return extensions[T] as T;
}
return null;
}
}

View File

@ -8,6 +8,7 @@ import 'package:appflowy_editor/src/render/style/plugin_styles.dart';
import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; import 'package:appflowy_editor/src/extensions/text_style_extension.dart';
import 'package:appflowy_editor/src/extensions/theme_extension.dart';
class BulletedListTextNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> { class BulletedListTextNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> {
@override @override
@ -61,7 +62,7 @@ class _BulletedListTextNodeWidgetState extends State<BulletedListTextNodeWidget>
} }
BulletedListPluginStyle get style => BulletedListPluginStyle get style =>
Theme.of(context).extension<BulletedListPluginStyle>() ?? Theme.of(context).extensionOrNull<BulletedListPluginStyle>() ??
BulletedListPluginStyle.light; BulletedListPluginStyle.light;
EdgeInsets get padding => style.padding( EdgeInsets get padding => style.padding(

View File

@ -4,6 +4,7 @@ import 'package:appflowy_editor/src/render/rich_text/built_in_text_widget.dart';
import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; import 'package:appflowy_editor/src/extensions/text_style_extension.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:appflowy_editor/src/extensions/theme_extension.dart';
class CheckboxNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> { class CheckboxNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> {
@override @override
@ -54,7 +55,7 @@ class _CheckboxNodeWidgetState extends State<CheckboxNodeWidget>
} }
CheckboxPluginStyle get style => CheckboxPluginStyle get style =>
Theme.of(context).extension<CheckboxPluginStyle>() ?? Theme.of(context).extensionOrNull<CheckboxPluginStyle>() ??
CheckboxPluginStyle.light; CheckboxPluginStyle.light;
EdgeInsets get padding => style.padding( EdgeInsets get padding => style.padding(

View File

@ -9,6 +9,7 @@ import 'package:appflowy_editor/src/service/render_plugin_service.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; import 'package:appflowy_editor/src/extensions/attributes_extension.dart';
import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; import 'package:appflowy_editor/src/extensions/text_style_extension.dart';
import 'package:appflowy_editor/src/extensions/theme_extension.dart';
class HeadingTextNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> { class HeadingTextNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> {
@override @override
@ -60,7 +61,7 @@ class _HeadingTextNodeWidgetState extends State<HeadingTextNodeWidget>
} }
HeadingPluginStyle get style => HeadingPluginStyle get style =>
Theme.of(context).extension<HeadingPluginStyle>() ?? Theme.of(context).extensionOrNull<HeadingPluginStyle>() ??
HeadingPluginStyle.light; HeadingPluginStyle.light;
EdgeInsets get padding => style.padding( EdgeInsets get padding => style.padding(

View File

@ -9,6 +9,7 @@ import 'package:appflowy_editor/src/service/render_plugin_service.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; import 'package:appflowy_editor/src/extensions/attributes_extension.dart';
import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; import 'package:appflowy_editor/src/extensions/text_style_extension.dart';
import 'package:appflowy_editor/src/extensions/theme_extension.dart';
class NumberListTextNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> { class NumberListTextNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> {
@override @override
@ -60,7 +61,7 @@ class _NumberListTextNodeWidgetState extends State<NumberListTextNodeWidget>
} }
NumberListPluginStyle get style => NumberListPluginStyle get style =>
Theme.of(context).extension<NumberListPluginStyle>() ?? Theme.of(context).extensionOrNull<NumberListPluginStyle>() ??
NumberListPluginStyle.light; NumberListPluginStyle.light;
EdgeInsets get padding => style.padding( EdgeInsets get padding => style.padding(

View File

@ -8,6 +8,7 @@ import 'package:appflowy_editor/src/render/style/plugin_styles.dart';
import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; import 'package:appflowy_editor/src/extensions/text_style_extension.dart';
import 'package:appflowy_editor/src/extensions/theme_extension.dart';
class QuotedTextNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> { class QuotedTextNodeWidgetBuilder extends NodeWidgetBuilder<TextNode> {
@override @override
@ -60,7 +61,7 @@ class _QuotedTextNodeWidgetState extends State<QuotedTextNodeWidget>
} }
QuotedTextPluginStyle get style => QuotedTextPluginStyle get style =>
Theme.of(context).extension<QuotedTextPluginStyle>() ?? Theme.of(context).extensionOrNull<QuotedTextPluginStyle>() ??
QuotedTextPluginStyle.light; QuotedTextPluginStyle.light;
EdgeInsets get padding => style.padding( EdgeInsets get padding => style.padding(