master #81
@ -19,8 +19,7 @@ export './buttons/buttons.dart';
|
|||||||
export './cards/cards.dart';
|
export './cards/cards.dart';
|
||||||
export './component.dart';
|
export './component.dart';
|
||||||
export './error_widget_component.dart';
|
export './error_widget_component.dart';
|
||||||
export './loader_component.dart';
|
export './loader/loader.dart';
|
||||||
export './loader_style.dart';
|
|
||||||
export './loading_widget_component.dart';
|
export './loading_widget_component.dart';
|
||||||
export './rich_text_builder/rich_text_builder.dart';
|
export './rich_text_builder/rich_text_builder.dart';
|
||||||
export './text_inputs/text_inputs.dart';
|
export './text_inputs/text_inputs.dart';
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
// 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 <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
export './loader_component.dart';
|
@ -1,82 +0,0 @@
|
|||||||
// 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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
import 'dart:ui';
|
|
||||||
|
|
||||||
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
|
||||||
|
|
||||||
class LoaderStyle extends ThemeStyle<LoaderStyle> {
|
|
||||||
const LoaderStyle({
|
|
||||||
this.colors,
|
|
||||||
this.stroke,
|
|
||||||
});
|
|
||||||
|
|
||||||
/// Merges non-null `b` attributes in `a`
|
|
||||||
static LoaderStyle? merge(
|
|
||||||
LoaderStyle? a,
|
|
||||||
LoaderStyle? b,
|
|
||||||
) {
|
|
||||||
if (b == null) {
|
|
||||||
return a?.copyWith();
|
|
||||||
}
|
|
||||||
if (a == null) {
|
|
||||||
return b.copyWith();
|
|
||||||
}
|
|
||||||
|
|
||||||
return a.copyWith(
|
|
||||||
colors: b.colors,
|
|
||||||
stroke: b.stroke,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Used for interpolation.
|
|
||||||
static LoaderStyle? lerp(
|
|
||||||
LoaderStyle? a,
|
|
||||||
LoaderStyle? b,
|
|
||||||
double t,
|
|
||||||
) {
|
|
||||||
if (a == null || b == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
// b.copyWith to return b attributes even if they are not lerped
|
|
||||||
return b.copyWith(
|
|
||||||
colors: MultiColor.lerp(a.colors, b.colors, t),
|
|
||||||
stroke: lerpDouble(a.stroke, b.stroke, t),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gradient colors from start to end.
|
|
||||||
final MultiColor? colors;
|
|
||||||
|
|
||||||
/// Loader stroke width
|
|
||||||
final double? stroke;
|
|
||||||
|
|
||||||
@override
|
|
||||||
LoaderStyle? mergeWith(LoaderStyle? other) => LoaderStyle.merge(this, other);
|
|
||||||
|
|
||||||
@override
|
|
||||||
LoaderStyle copyWith({
|
|
||||||
MultiColor? colors,
|
|
||||||
double? stroke,
|
|
||||||
}) =>
|
|
||||||
LoaderStyle(
|
|
||||||
colors: colors ?? this.colors,
|
|
||||||
stroke: stroke ?? this.stroke,
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() => 'LoaderStyle($colors, $stroke)';
|
|
||||||
}
|
|
@ -16,4 +16,3 @@
|
|||||||
|
|
||||||
export 'parser.dart';
|
export 'parser.dart';
|
||||||
export 'rich_text_builder_component.dart';
|
export 'rich_text_builder_component.dart';
|
||||||
export 'rich_text_builder_style.dart';
|
|
||||||
|
@ -28,7 +28,6 @@ abstract class RichTextBuilderComponent extends Component
|
|||||||
this.parser,
|
this.parser,
|
||||||
this.defaultStyle,
|
this.defaultStyle,
|
||||||
this.styles,
|
this.styles,
|
||||||
super.themeResolver,
|
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -11,15 +11,12 @@ abstract class $RichTextBuilderComponentCWProxy {
|
|||||||
RichTextBuilderComponent parser(RichTextParser? parser);
|
RichTextBuilderComponent parser(RichTextParser? parser);
|
||||||
RichTextBuilderComponent defaultStyle(TextStyle? defaultStyle);
|
RichTextBuilderComponent defaultStyle(TextStyle? defaultStyle);
|
||||||
RichTextBuilderComponent styles(Map<String, TextStyle>? styles);
|
RichTextBuilderComponent styles(Map<String, TextStyle>? styles);
|
||||||
RichTextBuilderComponent themeResolver(
|
|
||||||
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver);
|
|
||||||
RichTextBuilderComponent key(Key? key);
|
RichTextBuilderComponent key(Key? key);
|
||||||
RichTextBuilderComponent call({
|
RichTextBuilderComponent call({
|
||||||
String? text,
|
String? text,
|
||||||
RichTextParser? parser,
|
RichTextParser? parser,
|
||||||
TextStyle? defaultStyle,
|
TextStyle? defaultStyle,
|
||||||
Map<String, TextStyle>? styles,
|
Map<String, TextStyle>? styles,
|
||||||
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
|
|
||||||
Key? key,
|
Key? key,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,79 +0,0 @@
|
|||||||
// 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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
|
||||||
|
|
||||||
class RichTextBuilderStyle extends ThemeStyle<RichTextBuilderStyle> {
|
|
||||||
const RichTextBuilderStyle({
|
|
||||||
this.defaultStyle,
|
|
||||||
this.styles,
|
|
||||||
});
|
|
||||||
|
|
||||||
/// Merges non-null `b` attributes in `a`
|
|
||||||
static RichTextBuilderStyle? merge(
|
|
||||||
RichTextBuilderStyle? a,
|
|
||||||
RichTextBuilderStyle? b,
|
|
||||||
) {
|
|
||||||
if (b == null) {
|
|
||||||
return a?.copyWith();
|
|
||||||
}
|
|
||||||
if (a == null) {
|
|
||||||
return b.copyWith();
|
|
||||||
}
|
|
||||||
|
|
||||||
return a.copyWith(
|
|
||||||
defaultStyle: b.defaultStyle,
|
|
||||||
styles: b.styles,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Used for interpolation.
|
|
||||||
static RichTextBuilderStyle? lerp(
|
|
||||||
RichTextBuilderStyle? a,
|
|
||||||
RichTextBuilderStyle? b,
|
|
||||||
double t,
|
|
||||||
) {
|
|
||||||
if (a == null || b == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
// b.copyWith to return b attributes even if they are not lerped
|
|
||||||
return b.copyWith(
|
|
||||||
defaultStyle: TextStyle.lerp(a.defaultStyle, b.defaultStyle, t),
|
|
||||||
styles: b.styles, // TODO(wyatt): compute lerp value of each styles
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Default TextStyle used in this rich text component.
|
|
||||||
final TextStyle? defaultStyle;
|
|
||||||
|
|
||||||
/// Used styles in this rich text component.
|
|
||||||
final Map<String, TextStyle>? styles;
|
|
||||||
|
|
||||||
@override
|
|
||||||
RichTextBuilderStyle? mergeWith(RichTextBuilderStyle? other) =>
|
|
||||||
RichTextBuilderStyle.merge(this, other);
|
|
||||||
|
|
||||||
@override
|
|
||||||
RichTextBuilderStyle? copyWith({
|
|
||||||
TextStyle? defaultStyle,
|
|
||||||
Map<String, TextStyle>? styles,
|
|
||||||
}) =>
|
|
||||||
RichTextBuilderStyle(
|
|
||||||
defaultStyle: defaultStyle ?? this.defaultStyle,
|
|
||||||
styles: styles ?? this.styles,
|
|
||||||
);
|
|
||||||
}
|
|
@ -20,7 +20,6 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_animate/flutter_animate.dart';
|
import 'package:flutter_animate/flutter_animate.dart';
|
||||||
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
|
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
||||||
import 'package:wyatt_ui_kit/src/components/loader/loader_theme_resolver.dart';
|
|
||||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
||||||
|
|
||||||
part 'loader.g.dart';
|
part 'loader.g.dart';
|
||||||
@ -33,30 +32,11 @@ class Loader extends LoaderComponent with $LoaderCWMixin {
|
|||||||
super.stroke,
|
super.stroke,
|
||||||
super.duration,
|
super.duration,
|
||||||
super.flip,
|
super.flip,
|
||||||
super.themeResolver,
|
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
|
||||||
LoaderThemeResolver? get themeResolver =>
|
|
||||||
super.themeResolver as LoaderThemeResolver?;
|
|
||||||
|
|
||||||
/// Negotiate the theme to get a complete style.
|
|
||||||
LoaderStyle _resolve(BuildContext context) {
|
|
||||||
final LoaderThemeResolver resolver = themeResolver ??
|
|
||||||
LoaderThemeResolver(
|
|
||||||
customStyleFn: (context, {extra}) => LoaderStyle(
|
|
||||||
colors: colors,
|
|
||||||
stroke: stroke,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
return resolver.negotiate(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final style = _resolve(context);
|
|
||||||
final dimension =
|
final dimension =
|
||||||
(radius != null) ? radius! * 2 : context.buttonTheme.height;
|
(radius != null) ? radius! * 2 : context.buttonTheme.height;
|
||||||
return SizedBox.square(
|
return SizedBox.square(
|
||||||
@ -64,9 +44,34 @@ class Loader extends LoaderComponent with $LoaderCWMixin {
|
|||||||
child: RepaintBoundary(
|
child: RepaintBoundary(
|
||||||
child: CustomPaint(
|
child: CustomPaint(
|
||||||
painter: _LoaderPainter(
|
painter: _LoaderPainter(
|
||||||
style.colors ?? const MultiColor([]),
|
ThemeHelper.getThemeElement<MultiColor, MultiColor>(
|
||||||
|
[
|
||||||
|
colors,
|
||||||
|
Theme.of(context).extension<LoaderThemeExtension>()?.colors,
|
||||||
|
MultiColor([
|
||||||
|
Theme.of(context).progressIndicatorTheme.color ??
|
||||||
|
context.colorScheme.primary,
|
||||||
|
context.colorScheme.onPrimary,
|
||||||
|
]),
|
||||||
|
|
||||||
|
/// This is the default value. So the final
|
||||||
|
/// value cannot be null.
|
||||||
|
const MultiColor([])
|
||||||
|
],
|
||||||
|
valueValidator: (multiColor) =>
|
||||||
|
multiColor != null && multiColor.isColor,
|
||||||
|
transform: (multiColor) => multiColor,
|
||||||
|
)!,
|
||||||
dimension / 2,
|
dimension / 2,
|
||||||
style.stroke ?? 4,
|
ThemeHelper.getThemeElement<double, double>(
|
||||||
|
[
|
||||||
|
stroke,
|
||||||
|
Theme.of(context).extension<LoaderThemeExtension>()?.stroke,
|
||||||
|
4,
|
||||||
|
],
|
||||||
|
valueValidator: (stroke) => stroke != null,
|
||||||
|
transform: (stroke) => stroke,
|
||||||
|
)!,
|
||||||
flip: flip ?? false,
|
flip: flip ?? false,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -41,7 +41,6 @@ class $LoaderCWProxyImpl implements $LoaderComponentCWProxy {
|
|||||||
stroke: stroke ?? _value.stroke,
|
stroke: stroke ?? _value.stroke,
|
||||||
duration: duration ?? _value.duration,
|
duration: duration ?? _value.duration,
|
||||||
flip: flip ?? _value.flip,
|
flip: flip ?? _value.flip,
|
||||||
themeResolver: themeResolver ?? _value.themeResolver,
|
|
||||||
key: key ?? _value.key,
|
key: key ?? _value.key,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
// 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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
|
||||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
|
||||||
|
|
||||||
class LoaderThemeResolver
|
|
||||||
extends ThemeResolver<LoaderStyle, LoaderThemeExtension, void> {
|
|
||||||
const LoaderThemeResolver({
|
|
||||||
required this.customStyleFn,
|
|
||||||
});
|
|
||||||
|
|
||||||
@override
|
|
||||||
final LoaderStyle? Function(
|
|
||||||
BuildContext context, {
|
|
||||||
void extra,
|
|
||||||
}) customStyleFn;
|
|
||||||
|
|
||||||
/// Values taken from <https://api.flutter.dev/flutter/material/ElevatedButton/defaultStyleOf.html>
|
|
||||||
@override
|
|
||||||
LoaderStyle computeDefaultValue(
|
|
||||||
BuildContext context, {
|
|
||||||
void extra,
|
|
||||||
}) =>
|
|
||||||
LoaderStyle(
|
|
||||||
colors: MultiColor([
|
|
||||||
Theme.of(context).progressIndicatorTheme.color ??
|
|
||||||
context.colorScheme.primary,
|
|
||||||
context.colorScheme.onPrimary,
|
|
||||||
]),
|
|
||||||
stroke: 4,
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
|
||||||
LoaderStyle? computeExtensionValueFn(
|
|
||||||
BuildContext context,
|
|
||||||
LoaderThemeExtension? themeExtension, {
|
|
||||||
void extra,
|
|
||||||
}) =>
|
|
||||||
LoaderStyle(
|
|
||||||
colors: themeExtension?.colors,
|
|
||||||
stroke: themeExtension?.stroke,
|
|
||||||
);
|
|
||||||
}
|
|
@ -17,7 +17,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
|
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
||||||
import 'package:wyatt_ui_kit/src/components/rich_text_builder/rich_text_builder_theme_resolver.dart';
|
|
||||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
||||||
|
|
||||||
part 'rich_text_builder.g.dart';
|
part 'rich_text_builder.g.dart';
|
||||||
@ -30,37 +29,39 @@ class RichTextBuilder extends RichTextBuilderComponent
|
|||||||
super.parser,
|
super.parser,
|
||||||
super.defaultStyle,
|
super.defaultStyle,
|
||||||
super.styles,
|
super.styles,
|
||||||
super.themeResolver,
|
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
|
||||||
RichTextBuilderThemeResolver? get themeResolver =>
|
|
||||||
super.themeResolver as RichTextBuilderThemeResolver?;
|
|
||||||
|
|
||||||
/// Negotiate the theme to get a complete style.
|
|
||||||
RichTextBuilderStyle _resolve(BuildContext context) {
|
|
||||||
final RichTextBuilderThemeResolver resolver = themeResolver ??
|
|
||||||
RichTextBuilderThemeResolver(
|
|
||||||
customStyleFn: (context, {extra}) => RichTextBuilderStyle(
|
|
||||||
defaultStyle: defaultStyle,
|
|
||||||
styles: styles,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
return resolver.negotiate(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final style = _resolve(context);
|
|
||||||
final RegExp regex = RegExp(r'<(.*?)>(.*?)<\/\1>');
|
final RegExp regex = RegExp(r'<(.*?)>(.*?)<\/\1>');
|
||||||
final root = RichTextNode.from(
|
final root = RichTextNode.from(
|
||||||
text ?? '',
|
text ?? '',
|
||||||
regex,
|
regex,
|
||||||
RichTextStyleParameter(
|
RichTextStyleParameter(
|
||||||
style.defaultStyle,
|
ThemeHelper.getThemeElement<TextStyle, TextStyle>(
|
||||||
style.styles ?? {},
|
[
|
||||||
|
defaultStyle,
|
||||||
|
Theme.of(context)
|
||||||
|
.extension<RichTextBuilderThemeExtension>()
|
||||||
|
?.defaultStyle,
|
||||||
|
context.textTheme.bodyMedium,
|
||||||
|
],
|
||||||
|
valueValidator: (style) => style != null,
|
||||||
|
transform: (style) => style,
|
||||||
|
),
|
||||||
|
ThemeHelper.getThemeElement<Map<String, TextStyle>,
|
||||||
|
Map<String, TextStyle>>(
|
||||||
|
[
|
||||||
|
styles,
|
||||||
|
Theme.of(context)
|
||||||
|
.extension<RichTextBuilderThemeExtension>()
|
||||||
|
?.styles,
|
||||||
|
const <String, TextStyle>{},
|
||||||
|
],
|
||||||
|
valueValidator: (styles) => styles != null,
|
||||||
|
transform: (styles) => styles,
|
||||||
|
)!,
|
||||||
null,
|
null,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -20,10 +20,6 @@ class $RichTextBuilderCWProxyImpl implements $RichTextBuilderComponentCWProxy {
|
|||||||
RichTextBuilder styles(Map<String, TextStyle>? styles) =>
|
RichTextBuilder styles(Map<String, TextStyle>? styles) =>
|
||||||
this(styles: styles);
|
this(styles: styles);
|
||||||
@override
|
@override
|
||||||
RichTextBuilder themeResolver(
|
|
||||||
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver) =>
|
|
||||||
this(themeResolver: themeResolver);
|
|
||||||
@override
|
|
||||||
RichTextBuilder key(Key? key) => this(key: key);
|
RichTextBuilder key(Key? key) => this(key: key);
|
||||||
@override
|
@override
|
||||||
RichTextBuilder call({
|
RichTextBuilder call({
|
||||||
@ -31,7 +27,6 @@ class $RichTextBuilderCWProxyImpl implements $RichTextBuilderComponentCWProxy {
|
|||||||
RichTextParser? parser,
|
RichTextParser? parser,
|
||||||
TextStyle? defaultStyle,
|
TextStyle? defaultStyle,
|
||||||
Map<String, TextStyle>? styles,
|
Map<String, TextStyle>? styles,
|
||||||
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
|
|
||||||
Key? key,
|
Key? key,
|
||||||
}) =>
|
}) =>
|
||||||
RichTextBuilder(
|
RichTextBuilder(
|
||||||
@ -39,7 +34,6 @@ class $RichTextBuilderCWProxyImpl implements $RichTextBuilderComponentCWProxy {
|
|||||||
parser: parser ?? _value.parser,
|
parser: parser ?? _value.parser,
|
||||||
defaultStyle: defaultStyle ?? _value.defaultStyle,
|
defaultStyle: defaultStyle ?? _value.defaultStyle,
|
||||||
styles: styles ?? _value.styles,
|
styles: styles ?? _value.styles,
|
||||||
themeResolver: themeResolver ?? _value.themeResolver,
|
|
||||||
key: key ?? _value.key,
|
key: key ?? _value.key,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
// 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 <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
|
||||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
|
||||||
|
|
||||||
class RichTextBuilderThemeResolver extends ThemeResolver<RichTextBuilderStyle,
|
|
||||||
RichTextBuilderThemeExtension, void> {
|
|
||||||
const RichTextBuilderThemeResolver({
|
|
||||||
required this.customStyleFn,
|
|
||||||
});
|
|
||||||
|
|
||||||
/// Values taken from <https://api.flutter.dev/flutter/material/ElevatedButton/defaultStyleOf.html>
|
|
||||||
@override
|
|
||||||
RichTextBuilderStyle computeDefaultValue(
|
|
||||||
BuildContext context, {
|
|
||||||
void extra,
|
|
||||||
}) =>
|
|
||||||
RichTextBuilderStyle(
|
|
||||||
defaultStyle: context.textTheme.bodyMedium,
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
|
||||||
final RichTextBuilderStyle? Function(
|
|
||||||
BuildContext context, {
|
|
||||||
void extra,
|
|
||||||
}) customStyleFn;
|
|
||||||
|
|
||||||
@override
|
|
||||||
RichTextBuilderStyle? computeExtensionValueFn(
|
|
||||||
BuildContext context,
|
|
||||||
RichTextBuilderThemeExtension? themeExtension, {
|
|
||||||
void extra,
|
|
||||||
}) =>
|
|
||||||
RichTextBuilderStyle(
|
|
||||||
defaultStyle: themeExtension?.defaultStyle,
|
|
||||||
styles: themeExtension?.styles,
|
|
||||||
);
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user