Browse Source

chore: add extension for themedata

Lucas.Xu 2 years ago
parent
commit
8656cfeb1e

+ 10 - 0
frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/theme_extension.dart

@@ -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;
+  }
+}

+ 2 - 1
frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart

@@ -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:flutter/material.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> {
   @override
@@ -61,7 +62,7 @@ class _BulletedListTextNodeWidgetState extends State<BulletedListTextNodeWidget>
   }
 
   BulletedListPluginStyle get style =>
-      Theme.of(context).extension<BulletedListPluginStyle>() ??
+      Theme.of(context).extensionOrNull<BulletedListPluginStyle>() ??
       BulletedListPluginStyle.light;
 
   EdgeInsets get padding => style.padding(

+ 2 - 1
frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/checkbox_text.dart

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

+ 2 - 1
frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/heading_text.dart

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

+ 2 - 1
frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/number_list_text.dart

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

+ 2 - 1
frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart

@@ -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:flutter/material.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> {
   @override
@@ -60,7 +61,7 @@ class _QuotedTextNodeWidgetState extends State<QuotedTextNodeWidget>
   }
 
   QuotedTextPluginStyle get style =>
-      Theme.of(context).extension<QuotedTextPluginStyle>() ??
+      Theme.of(context).extensionOrNull<QuotedTextPluginStyle>() ??
       QuotedTextPluginStyle.light;
 
   EdgeInsets get padding => style.padding(