diff --git a/packages/wyatt_ui_kit/example/lib/rich_text_builders/rich_text_builders.dart b/packages/wyatt_ui_kit/example/lib/rich_text_builders/rich_text_builders.dart
index 662a2b91..8d5316e4 100644
--- a/packages/wyatt_ui_kit/example/lib/rich_text_builders/rich_text_builders.dart
+++ b/packages/wyatt_ui_kit/example/lib/rich_text_builders/rich_text_builders.dart
@@ -16,11 +16,8 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
-import 'package:google_fonts/google_fonts.dart';
-import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
import 'package:wyatt_ui_kit_example/demo_page.dart';
-import 'package:wyatt_ui_kit_example/theme/constants.dart';
class RichTextBuilders extends DemoPage {
const RichTextBuilders({super.key});
@@ -40,29 +37,25 @@ class RichTextBuilders extends DemoPage {
),
),
const Gap(20),
- RichTextBuilder(
- defaultStyle: GoogleFonts.montserrat(
- fontSize: 18,
- fontWeight: FontWeight.w500,
- height: 1.8,
- ),
- styles: {
- 'gradient-blue': GradientTextStyle.from(
- GoogleFonts.montserrat(
- fontSize: 20,
- fontWeight: FontWeight.w600,
- color: Constants.blue1,
- height: 1.8,
- ),
- const MultiColor(Constants.blueGradient),
- )
- },
- text: '''
+ const Padding(
+ padding: EdgeInsets.all(8),
+ child: RichTextBuilder(
+ text: '''
Innovation, Expertise et Accompagnement...
Notre agence de développement Wyatt Studio met tout en oeuvre pour vous aider à concrétiser vos idées de solutions informatiques et mobiles.
Vous aussi, comme beaucoup d’autres agences ou startups, faites nous confiance pour la réalisation de votre projet dès maintenant !
-''',
+ ''',
+ ),
+ ),
+ const Gap(20),
+ const Padding(
+ padding: EdgeInsets.all(8),
+ child: RichTextBuilder(
+ text: '''
+Je peux être bleu, ou même rouge en dégradé. À vrai dire je peux être un peu n'importe quelle couleur.
+ ''',
+ ),
),
const Gap(20),
],
diff --git a/packages/wyatt_ui_kit/example/lib/theme/rich_text_builder_theme.dart b/packages/wyatt_ui_kit/example/lib/theme/rich_text_builder_theme.dart
new file mode 100644
index 00000000..2088f0fe
--- /dev/null
+++ b/packages/wyatt_ui_kit/example/lib/theme/rich_text_builder_theme.dart
@@ -0,0 +1,120 @@
+// Copyright (C) 2023 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+import 'package:flutter/material.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
+import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
+import 'package:wyatt_ui_kit_example/theme/constants.dart';
+
+final Map _styles = {
+ 'gradient-blue': GradientTextStyle.from(
+ GoogleFonts.montserrat(
+ fontSize: 20,
+ fontWeight: FontWeight.w600,
+ color: Constants.blue1,
+ height: 1.8,
+ ),
+ const MultiColor(Constants.blueGradient),
+ ),
+ 'gradient-red': GradientTextStyle.from(
+ GoogleFonts.montserrat(
+ fontSize: 20,
+ fontWeight: FontWeight.w600,
+ color: Constants.red1,
+ height: 1.8,
+ ),
+ const MultiColor(Constants.redGradient),
+ ),
+ 'gradient-green': GradientTextStyle.from(
+ GoogleFonts.montserrat(
+ fontSize: 20,
+ fontWeight: FontWeight.w600,
+ color: Constants.green1,
+ height: 1.8,
+ ),
+ const MultiColor(Constants.greenGradient),
+ ),
+ 'blue': GoogleFonts.montserrat(
+ fontSize: 20,
+ fontWeight: FontWeight.w600,
+ color: Constants.blue1,
+ height: 1.8,
+ ),
+ 'red': GoogleFonts.montserrat(
+ fontSize: 20,
+ fontWeight: FontWeight.w600,
+ color: Constants.red1,
+ height: 1.8,
+ ),
+ 'green': GoogleFonts.montserrat(
+ fontSize: 20,
+ fontWeight: FontWeight.w600,
+ color: Constants.green1,
+ height: 1.8,
+ ),
+};
+
+class RichTextBuilderTheme extends RichTextBuilderThemeExtension {
+ const RichTextBuilderTheme({
+ super.defaultStyle,
+ super.styles,
+ });
+
+ factory RichTextBuilderTheme.light() => RichTextBuilderTheme(
+ defaultStyle: GoogleFonts.montserrat(
+ fontSize: 18,
+ fontWeight: FontWeight.w500,
+ color: Constants.grey3,
+ height: 1.8,
+ ),
+ styles: _styles,
+ );
+
+ factory RichTextBuilderTheme.dark() => RichTextBuilderTheme(
+ defaultStyle: GoogleFonts.montserrat(
+ fontSize: 18,
+ fontWeight: FontWeight.w500,
+ color: Constants.white,
+ height: 1.8,
+ ),
+ styles: _styles,
+ );
+
+ @override
+ ThemeExtension copyWith({
+ TextStyle? defaultStyle,
+ Map? styles,
+ }) =>
+ RichTextBuilderTheme(
+ defaultStyle: defaultStyle ?? this.defaultStyle,
+ styles: styles ?? this.styles,
+ );
+
+ @override
+ ThemeExtension lerp(
+ covariant ThemeExtension? other,
+ double t,
+ ) {
+ if (other is! RichTextBuilderTheme) {
+ return this;
+ }
+ return RichTextBuilderTheme(
+ defaultStyle: TextStyle.lerp(defaultStyle, other.defaultStyle, t),
+ styles: styles,
+ );
+ }
+}
diff --git a/packages/wyatt_ui_kit/example/lib/theme/themes.dart b/packages/wyatt_ui_kit/example/lib/theme/themes.dart
index 684270f8..63ecea53 100644
--- a/packages/wyatt_ui_kit/example/lib/theme/themes.dart
+++ b/packages/wyatt_ui_kit/example/lib/theme/themes.dart
@@ -21,6 +21,7 @@ import 'package:wyatt_ui_kit_example/theme/card_theme.dart';
import 'package:wyatt_ui_kit_example/theme/file_selection_button_theme.dart';
import 'package:wyatt_ui_kit_example/theme/flat_button_theme.dart';
import 'package:wyatt_ui_kit_example/theme/loader_theme.dart';
+import 'package:wyatt_ui_kit_example/theme/rich_text_builder_theme.dart';
import 'package:wyatt_ui_kit_example/theme/simple_icon_button_theme.dart';
import 'package:wyatt_ui_kit_example/theme/symbol_button_theme.dart';
@@ -87,6 +88,8 @@ abstract class Themes {
FileSelectionButtonTheme.light(),
// Loader
LoaderTheme.light(),
+ // Rich Text
+ RichTextBuilderTheme.light(),
],
);
@@ -102,6 +105,9 @@ abstract class Themes {
color: const Color(0xFFFFFFFF),
),
),
+ drawerTheme: const DrawerThemeData(
+ backgroundColor: Color(0xFF383C40),
+ ),
scaffoldBackgroundColor: const Color(0xFF383C40),
extensions: >[
// Cards
@@ -113,6 +119,8 @@ abstract class Themes {
FileSelectionButtonTheme.dark(),
// Loader
LoaderTheme.dark(),
+ // Rich Text
+ RichTextBuilderTheme.dark(),
],
);
}
diff --git a/packages/wyatt_ui_kit/lib/src/components/rich_text_builder/rich_text_builder.dart b/packages/wyatt_ui_kit/lib/src/components/rich_text_builder/rich_text_builder.dart
index 8bf2017b..745d3462 100644
--- a/packages/wyatt_ui_kit/lib/src/components/rich_text_builder/rich_text_builder.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/rich_text_builder/rich_text_builder.dart
@@ -50,6 +50,7 @@ class RichTextBuilder extends RichTextBuilderComponent
}) =>
RichTextBuilderStyle(
defaultStyle: themeExtension.defaultStyle,
+ styles: themeExtension.styles,
),
customStyleFn: (context, {extra}) => RichTextBuilderStyle(
defaultStyle: defaultStyle,
@@ -73,7 +74,6 @@ class RichTextBuilder extends RichTextBuilderComponent
null,
),
);
-
final customParser = parser ??
RichTextParser(
nodeBuilder: (content, style) {
@@ -83,6 +83,9 @@ class RichTextBuilder extends RichTextBuilderComponent
content,
style: style,
softWrap: true,
+ textHeightBehavior: const TextHeightBehavior(
+ applyHeightToLastDescent: false,
+ ),
),
style: style,
);
@@ -94,8 +97,12 @@ class RichTextBuilder extends RichTextBuilderComponent
},
);
- return RichText(
- text: root.toInlineSpan(customParser),
+ return SelectionArea(
+ child: Text.rich(
+ TextSpan(children: [root.toInlineSpan(customParser)]),
+ textHeightBehavior:
+ const TextHeightBehavior(applyHeightToLastDescent: false),
+ ),
);
}
}
diff --git a/packages/wyatt_ui_kit/lib/src/components/rich_text_builder/rich_text_builder_theme_resolver.dart b/packages/wyatt_ui_kit/lib/src/components/rich_text_builder/rich_text_builder_theme_resolver.dart
index 3ccf0112..f619d0a0 100644
--- a/packages/wyatt_ui_kit/lib/src/components/rich_text_builder/rich_text_builder_theme_resolver.dart
+++ b/packages/wyatt_ui_kit/lib/src/components/rich_text_builder/rich_text_builder_theme_resolver.dart
@@ -16,7 +16,6 @@
import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
-import 'package:wyatt_ui_kit/src/domain/rich_text_builder_theme_extension.dart';
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
class RichTextBuilderThemeResolver extends ThemeResolver.
export './button_theme_extension/button_theme_extension.dart';
+export './card_theme_extension.dart';
export './loader_theme_extension.dart';
-export 'card_theme_extension.dart';
+export './rich_text_builder_theme_extension.dart';