Compare commits

..

No commits in common. "e76857f1186a29c6ce91148607eecc10081a43a7" and "635bb329ea0d8ec589e926741d94a350926b3572" have entirely different histories.

15 changed files with 47 additions and 80 deletions

View File

@ -88,7 +88,6 @@ class $CustomAppBarCWProxyImpl implements $TopAppBarComponentCWProxy {
Key? key, Key? key,
}) => }) =>
CustomAppBar( CustomAppBar(
key: key ?? _value.key,
title: title ?? _value.title, title: title ?? _value.title,
); );
} }

View File

@ -24,9 +24,7 @@ class $CustomBottomBarCWProxyImpl
int? currentIndex, int? currentIndex,
Key? key, Key? key,
}) => }) =>
CustomBottomBar( CustomBottomBar();
key: key ?? _value.key,
);
} }
mixin $CustomBottomBarCWMixin on Component { mixin $CustomBottomBarCWMixin on Component {

View File

@ -5,12 +5,13 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
part 'custom_error_widget.g.dart'; part 'custom_error_widget.g.dart';
@ComponentCopyWithExtension() @ComponentCopyWithExtension()
class CustomErrorWidget extends ErrorComponent with $CustomErrorWidgetCWMixin { class CustomErrorWidget extends ErrorWidgetComponent
const CustomErrorWidget({super.key, super.details}); with $CustomErrorWidgetCWMixin {
CustomErrorWidget({super.key, super.error});
@override @override
Widget build(BuildContext context) => ColoredBox( Widget build(BuildContext context) => ColoredBox(
color: Colors.red, color: Colors.red,
child: Center(child: Text(details?.data ?? 'Error')), child: Center(child: Text(error?.data ?? 'Error')),
); );
} }

View File

@ -6,36 +6,24 @@ part of 'custom_error_widget.dart';
// ComponentCopyWithGenerator // ComponentCopyWithGenerator
// ************************************************************************** // **************************************************************************
class $CustomErrorWidgetCWProxyImpl implements $ErrorComponentCWProxy { class $CustomErrorWidgetCWProxyImpl implements $ErrorWidgetComponentCWProxy {
const $CustomErrorWidgetCWProxyImpl(this._value); const $CustomErrorWidgetCWProxyImpl(this._value);
final CustomErrorWidget _value; final CustomErrorWidget _value;
@override @override
CustomErrorWidget colors(MultiColor? colors) => this(colors: colors); CustomErrorWidget error(TextWrapper? error) => this(error: error);
@override
CustomErrorWidget message(TextWrapper? message) => this(message: message);
@override
CustomErrorWidget details(TextWrapper? details) => this(details: details);
@override
CustomErrorWidget themeResolver(
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver) =>
this(themeResolver: themeResolver);
@override @override
CustomErrorWidget key(Key? key) => this(key: key); CustomErrorWidget key(Key? key) => this(key: key);
@override @override
CustomErrorWidget call({ CustomErrorWidget call({
MultiColor? colors, TextWrapper? error,
TextWrapper? message,
TextWrapper? details,
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
Key? key, Key? key,
}) => }) =>
CustomErrorWidget( CustomErrorWidget(
key: key ?? _value.key, error: error ?? _value.error,
details: details ?? _value.details,
); );
} }
mixin $CustomErrorWidgetCWMixin on Component { mixin $CustomErrorWidgetCWMixin on Component {
$ErrorComponentCWProxy get copyWith => $ErrorWidgetComponentCWProxy get copyWith =>
$CustomErrorWidgetCWProxyImpl(this as CustomErrorWidget); $CustomErrorWidgetCWProxyImpl(this as CustomErrorWidget);
} }

View File

@ -5,14 +5,11 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
part 'custom_loading_widget.g.dart'; part 'custom_loading_widget.g.dart';
@ComponentCopyWithExtension() @ComponentCopyWithExtension()
class CustomLoadingWidget extends LoaderComponent class CustomLoadingWidget extends LoadingWidgetComponent
with $CustomLoadingWidgetCWMixin { with $CustomLoadingWidgetCWMixin {
const CustomLoadingWidget({super.key, super.colors}); CustomLoadingWidget({super.key, super.color});
@override @override
Widget build(BuildContext context) => Center( Widget build(BuildContext context) =>
child: CircularProgressIndicator( Center(child: CircularProgressIndicator(color: color));
color: (colors?.isColor ?? false) ? colors!.color : Colors.blue,
),
);
} }

View File

@ -6,42 +6,25 @@ part of 'custom_loading_widget.dart';
// ComponentCopyWithGenerator // ComponentCopyWithGenerator
// ************************************************************************** // **************************************************************************
class $CustomLoadingWidgetCWProxyImpl implements $LoaderComponentCWProxy { class $CustomLoadingWidgetCWProxyImpl
implements $LoadingWidgetComponentCWProxy {
const $CustomLoadingWidgetCWProxyImpl(this._value); const $CustomLoadingWidgetCWProxyImpl(this._value);
final CustomLoadingWidget _value; final CustomLoadingWidget _value;
@override @override
CustomLoadingWidget colors(MultiColor? colors) => this(colors: colors); CustomLoadingWidget color(Color? color) => this(color: color);
@override
CustomLoadingWidget radius(double? radius) => this(radius: radius);
@override
CustomLoadingWidget stroke(double? stroke) => this(stroke: stroke);
@override
CustomLoadingWidget duration(Duration? duration) => this(duration: duration);
@override
CustomLoadingWidget flip(bool? flip) => this(flip: flip);
@override
CustomLoadingWidget themeResolver(
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver) =>
this(themeResolver: themeResolver);
@override @override
CustomLoadingWidget key(Key? key) => this(key: key); CustomLoadingWidget key(Key? key) => this(key: key);
@override @override
CustomLoadingWidget call({ CustomLoadingWidget call({
MultiColor? colors, Color? color,
double? radius,
double? stroke,
Duration? duration,
bool? flip,
ThemeResolver<dynamic, dynamic, dynamic>? themeResolver,
Key? key, Key? key,
}) => }) =>
CustomLoadingWidget( CustomLoadingWidget(
key: key ?? _value.key, color: color ?? _value.color,
colors: colors ?? _value.colors,
); );
} }
mixin $CustomLoadingWidgetCWMixin on Component { mixin $CustomLoadingWidgetCWMixin on Component {
$LoaderComponentCWProxy get copyWith => $LoadingWidgetComponentCWProxy get copyWith =>
$CustomLoadingWidgetCWProxyImpl(this as CustomLoadingWidget); $CustomLoadingWidgetCWProxyImpl(this as CustomLoadingWidget);
} }

View File

@ -4,11 +4,11 @@ import 'package:bloc_layout_example/components/custom_error_widget.dart';
import 'package:bloc_layout_example/components/custom_loading_widget.dart'; import 'package:bloc_layout_example/components/custom_loading_widget.dart';
import 'package:wyatt_ui_components/wyatt_ui_components.dart'; import 'package:wyatt_ui_components/wyatt_ui_components.dart';
abstract class AppThemeComponent { class AppThemeComponent {
static const ComponentThemeData components = ComponentThemeData.raw( static ComponentThemeData get components => ComponentThemeData.raw(
topAppBar: CustomAppBar(), appBar: const CustomAppBar(),
bottomNavigationBar: CustomBottomBar(), bottomNavigationBar: const CustomBottomBar(),
loader: CustomLoadingWidget(), loadingWidget: CustomLoadingWidget(),
error: CustomErrorWidget(), errorWidget: CustomErrorWidget(),
); );
} }

View File

@ -32,7 +32,7 @@ class MyApp extends StatelessWidget {
// This widget is the root of your application. // This widget is the root of your application.
@override @override
Widget build(BuildContext context) => ComponentTheme( Widget build(BuildContext context) => ComponentTheme(
data: AppThemeComponent.components, componentThemeWidget: AppThemeComponent.components,
child: MaterialApp( child: MaterialApp(
title: 'Bloc Layout Example', title: 'Bloc Layout Example',
theme: ThemeData( theme: ThemeData(
@ -122,7 +122,7 @@ class ExampleFrameLayoutCrudConsumer
ExampleFrameLayoutCrudConsumer({super.key}) ExampleFrameLayoutCrudConsumer({super.key})
: super( : super(
customAppBar: (bar) => bar?.copyWith.title( customAppBar: (bar) => bar?.copyWith.title(
const TextWrapper('Example Title'), 'Example Title'.wrap(),
), ),
); );
@ -139,7 +139,7 @@ class ExampleFrameLayoutCrudListConsumer
ExampleFrameLayoutCrudListConsumer({super.key}) ExampleFrameLayoutCrudListConsumer({super.key})
: super( : super(
customAppBar: (bar) => bar?.copyWith.title( customAppBar: (bar) => bar?.copyWith.title(
const TextWrapper('Example Title'), 'Example Title'.wrap(),
), ),
); );

View File

@ -23,12 +23,11 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
mixin CrudMixin<Cubit extends bloc_base.Cubit<dynamic>, mixin CrudMixin<Cubit extends bloc_base.Cubit<dynamic>,
SuccessState extends CrudSuccess> { SuccessState extends CrudSuccess> {
Widget errorBuilder(BuildContext context, CrudError state) => Widget errorBuilder(BuildContext context, CrudError state) =>
context.components.errorComponent.call( context.components.errorWidget?.copyWith(error: state.message.wrap()) ??
message: (state.message != null) ? TextWrapper(state.message!) : null, const SizedBox.shrink();
);
Widget loadingBuilder(BuildContext context, CrudLoading state) => Widget loadingBuilder(BuildContext context, CrudLoading state) =>
context.components.loader ?? const SizedBox.shrink(); context.components.loadingWidget ?? const SizedBox.shrink();
Widget initialBuilder(BuildContext context, CrudInitial state) => Widget initialBuilder(BuildContext context, CrudInitial state) =>
const SizedBox.shrink(); const SizedBox.shrink();

View File

@ -123,5 +123,9 @@ class TextWrapper {
final Color? selectionColor; final Color? selectionColor;
@override @override
String toString() => data; String toString() => 'TextWrapper(data: $data, style: $style, '
'gradientColors: $gradientColors, textAlign: $textAlign, '
'textDirection: $textDirection, softWrap: $softWrap, '
'overflow: $overflow, maxLines: $maxLines, '
'selectionColor: $selectionColor)';
} }

View File

@ -7,7 +7,7 @@ import 'package:wyatt_ui_layout_example/pages/bottom_navigation_bar_layout_page_
class AppThemeComponent { class AppThemeComponent {
static ComponentThemeData get components => ComponentThemeData.raw( static ComponentThemeData get components => ComponentThemeData.raw(
topAppBar: const CustomAppBar(), appBar: const CustomAppBar(),
bottomNavigationBar: CustomBottomNavigationBar( bottomNavigationBar: CustomBottomNavigationBar(
onTap: (context, index) { onTap: (context, index) {
switch (index) { switch (index) {

View File

@ -29,7 +29,7 @@ class MyApp extends StatelessWidget {
// This widget is the root of your application. // This widget is the root of your application.
@override @override
Widget build(BuildContext context) => ComponentTheme( Widget build(BuildContext context) => ComponentTheme(
data: AppThemeComponent.components, componentThemeWidget: AppThemeComponent.components,
child: MaterialApp( child: MaterialApp(
title: 'Wyatt Ui Layout Example', title: 'Wyatt Ui Layout Example',
theme: ThemeData( theme: ThemeData(

View File

@ -7,8 +7,7 @@ class AppBarLayoutPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) => TopAppBarLayout( Widget build(BuildContext context) => TopAppBarLayout(
custom: (topBar) => custom: (p0) => p0?.copyWith.title('New Title'.wrap()),
topBar?.copyWith.title(const TextWrapper('New Title')),
body: const Center( body: const Center(
child: Text( child: Text(
'Body', 'Body',

View File

@ -52,12 +52,12 @@ class FrameLayout extends StructuralLayout {
@override @override
Widget build(BuildContext context) => Scaffold( Widget build(BuildContext context) => Scaffold(
appBar: (customAppBar?.call(context.components.topAppBar) != null || appBar: (customAppBar?.call(context.components.appBar) != null ||
context.components.topAppBar != null) context.components.appBar != null)
? PreferredSize( ? PreferredSize(
preferredSize: Size.fromHeight(height), preferredSize: Size.fromHeight(height),
child: customAppBar?.call(context.components.topAppBar) ?? child: customAppBar?.call(context.components.appBar) ??
context.components.topAppBar!, context.components.appBar!,
) )
: null, : null,
body: body, body: body,

View File

@ -82,8 +82,7 @@ class TopAppBarLayout extends TopBarLayout<TopAppBarComponent> {
}); });
@override @override
TopAppBarComponent? child(BuildContext context) => TopAppBarComponent? child(BuildContext context) => context.components.appBar;
context.components.topAppBar;
} }
/// A concrete implementation of [TopBarLayout] for a navigation bar. /// A concrete implementation of [TopBarLayout] for a navigation bar.
@ -103,5 +102,5 @@ class TopNavigationBarLayout extends TopBarLayout<TopNavigationBarComponent> {
@override @override
TopNavigationBarComponent? child(BuildContext context) => TopNavigationBarComponent? child(BuildContext context) =>
context.components.topNavigationBar; context.components.topNavigationBarComponent;
} }