Skip to content

Commit 5d09d61

Browse files
authored
refactor: Rewrite all components in the new Archtecture (#467)
1 parent 46c351b commit 5d09d61

File tree

119 files changed

+1307
-2366
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+1307
-2366
lines changed

melos.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ scripts:
9393
custom_lint_analyze:
9494
run: melos exec --depends-on="mix_lint" dart pub run custom_lint
9595

96-
mix_exports:
97-
run: melos exec --scope="packages/mix" dart run ./scripts/exports.dart
96+
exports:
97+
run: melos exec --scope="mix" --scope="remix" dart run ../../scripts/exports.dart .
9898
description: Generate exports for the mix package
9999

100100
verify_version_pubspec_changelog:

mix.code-workspace

+25-25
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
{
22
"folders": [
3-
{
4-
"name": "mix",
5-
"path": "packages/mix"
6-
},
7-
{
8-
"name": "root",
9-
"path": "."
10-
},
11-
{
12-
"name": "mix_generator",
13-
"path": "packages/mix_generator"
14-
},
15-
{
16-
"name": "mix_annotations",
17-
"path": "packages/mix_annotations"
18-
},
19-
{
20-
"name": "remix",
21-
"path": "packages/remix"
22-
},
23-
{
24-
"name": "mix_animate",
25-
"path": "packages/mix_animate"
26-
}
27-
],
3+
{
4+
"name": "root",
5+
"path": "."
6+
},
7+
{
8+
"name": "mix",
9+
"path": "packages/mix"
10+
},
11+
{
12+
"name": "mix_generator",
13+
"path": "packages/mix_generator"
14+
},
15+
{
16+
"name": "mix_annotations",
17+
"path": "packages/mix_annotations"
18+
},
19+
{
20+
"name": "remix",
21+
"path": "packages/remix"
22+
},
23+
{
24+
"name": "mix_animate",
25+
"path": "packages/mix_animate"
26+
}
27+
],
2828
"settings": {
2929
"search.exclude": {
3030
".fvm/**": true,

packages/mix/lib/mix.dart

+2
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,11 @@ export 'src/modifiers/clip_widget_modifier.dart';
7575
export 'src/modifiers/flexible_widget_modifier.dart';
7676
export 'src/modifiers/fractionally_sized_box_widget_modifier.dart';
7777
export 'src/modifiers/intrinsic_widget_modifier.dart';
78+
export 'src/modifiers/mouse_cursor_modifier.dart';
7879
export 'src/modifiers/opacity_widget_modifier.dart';
7980
export 'src/modifiers/padding_widget_modifier.dart';
8081
export 'src/modifiers/rotated_box_widget_modifier.dart';
82+
export 'src/modifiers/scroll_view_widget_modifier.dart';
8183
export 'src/modifiers/sized_box_widget_modifier.dart';
8284
export 'src/modifiers/transform_widget_modifier.dart';
8385
export 'src/modifiers/visibility_widget_modifier.dart';

packages/remix/demo/ios/Runner/AppDelegate.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import UIKit
22
import Flutter
33

4-
@UIApplicationMain
4+
@main
55
@objc class AppDelegate: FlutterAppDelegate {
66
override func application(
77
_ application: UIApplication,
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,28 @@
11
import 'package:flutter/material.dart';
2-
import 'package:remix/components/avatar/avatar.dart';
2+
3+
import 'package:remix/remix.dart';
34
import 'package:widgetbook/widgetbook.dart';
45
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
56

6-
import '../helpers/label_variant_builder.dart';
7-
87
final _key = GlobalKey();
98

109
@widgetbook.UseCase(
1110
name: 'Avatar Component',
12-
type: RxAvatar,
11+
type: XAvatar,
1312
)
1413
Widget buildAvatarUseCase(BuildContext context) {
1514
final imageUrl = context.knobs.string(
1615
label: 'Image URL',
1716
initialValue: 'https://i.pravatar.cc/150?img=48',
1817
);
1918

20-
Widget buildAvatar(AvatarVariant variant) {
21-
return Column(
22-
children: [
23-
Text(variant.name.split('.').last),
24-
const SizedBox(height: 10),
25-
RxAvatar(
26-
image: NetworkImage(imageUrl),
27-
fallback: context.knobs.string(
28-
label: 'Fallback',
29-
initialValue: 'AB',
30-
),
31-
variant: variant,
32-
size: context.knobs.list(
33-
label: 'Size',
34-
options: AvatarSize.values,
35-
initialOption: AvatarSize.size4,
36-
labelBuilder: variantLabelBuilder,
37-
),
38-
radius: context.knobs.list(
39-
label: 'Radius',
40-
options: AvatarRadius.values,
41-
initialOption: AvatarRadius.full,
42-
labelBuilder: variantLabelBuilder,
43-
),
44-
),
45-
],
46-
);
47-
}
48-
4919
return KeyedSubtree(
5020
key: _key,
51-
child: Wrap(
52-
spacing: 12,
53-
runSpacing: 12,
54-
children: AvatarVariant.values.map(buildAvatar).toList(),
21+
child: Center(
22+
child: XAvatar(
23+
image: imageUrl.isNotEmpty ? NetworkImage(imageUrl) : null,
24+
fallbackBuilder: (spec) => spec('CA'),
25+
),
5526
),
5627
);
5728
}
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,20 @@
11
import 'package:flutter/material.dart';
22
import 'package:remix/remix.dart';
33
import 'package:widgetbook/widgetbook.dart';
4-
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
54

6-
import '../helpers/label_variant_builder.dart';
5+
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
76

87
@widgetbook.UseCase(
98
name: 'Badge Component',
10-
type: RxBadge,
9+
type: XBadge,
1110
)
1211
Widget buildAvatarUseCase(BuildContext context) {
13-
return RxBadge(
14-
label: 'New',
15-
size: context.knobs.list(
16-
label: 'Size',
17-
options: BadgeSize.values,
18-
labelBuilder: variantLabelBuilder,
19-
),
20-
variant: context.knobs.list(
21-
label: 'Variant',
22-
options: BadgeVariant.values,
23-
labelBuilder: variantLabelBuilder,
24-
),
25-
radius: context.knobs.list(
26-
label: 'Radius',
27-
options: BadgeRadius.values,
28-
labelBuilder: variantLabelBuilder,
12+
return Center(
13+
child: XBadge(
14+
label: context.knobs.string(
15+
label: 'Label',
16+
initialValue: 'New',
17+
),
2918
),
3019
);
3120
}

packages/remix/demo/lib/components/button_use_case.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:demo/addons/icon_data_knob.dart';
22
import 'package:flutter/material.dart';
3-
import 'package:remix/components/button/button.dart';
3+
44
import 'package:remix/remix.dart';
55
import 'package:widgetbook/widgetbook.dart';
66
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,25 @@
11
import 'package:flutter/material.dart';
2-
import 'package:remix/components/callout/callout.dart';
3-
import 'package:widgetbook/widgetbook.dart';
2+
import 'package:remix/remix.dart';
3+
44
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
55

66
final _key = GlobalKey();
77

88
@widgetbook.UseCase(
99
name: 'Callout Component',
10-
type: RxCallout,
10+
type: XCallout,
1111
)
1212
Widget buildCalloutUseCase(BuildContext context) {
13-
Widget buildCallout(CalloutVariant variant) {
14-
return Column(
15-
crossAxisAlignment: CrossAxisAlignment.start,
16-
children: [
17-
Text(variant.label),
18-
const SizedBox(
19-
height: 10,
20-
),
21-
SizedBox(
22-
width: 300,
23-
child: RxCallout(
24-
icon: context.knobs.list(
25-
label: 'Icon',
26-
options: [
27-
Icons.info,
28-
Icons.warning,
29-
Icons.error,
30-
Icons.check_circle,
31-
],
32-
initialOption: Icons.info,
33-
labelBuilder: (value) => value.toString(),
34-
),
35-
variant: variant,
36-
text: context.knobs.string(
37-
label: 'Text',
38-
initialValue: 'Content for the callout goes here',
39-
),
40-
),
41-
),
42-
const SizedBox(
43-
height: 50,
44-
),
45-
],
46-
);
47-
}
48-
4913
return KeyedSubtree(
5014
key: _key,
51-
child: Column(
52-
mainAxisSize: MainAxisSize.min,
53-
children: [
54-
...CalloutVariant.values.map(buildCallout),
55-
],
15+
child: const Center(
16+
child: SizedBox(
17+
width: 300,
18+
child: XCallout(
19+
icon: Icons.info,
20+
text: 'Lucas',
21+
),
22+
),
5623
),
5724
);
5825
}
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,20 @@
1-
import 'package:demo/helpers/label_variant_builder.dart';
21
import 'package:flutter/material.dart';
3-
import 'package:mix/mix.dart';
42
import 'package:remix/remix.dart';
5-
import 'package:widgetbook/widgetbook.dart';
63
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
74

85
@widgetbook.UseCase(
96
name: 'Card Component',
10-
type: RxCard,
7+
type: XCard,
118
)
129
Widget buildCard(BuildContext context) {
13-
Widget buildCard(CardVariant variant) {
14-
return Column(
10+
return const Center(
11+
child: XCard(
1512
children: [
16-
Text(variant.label),
17-
const SizedBox(height: 10),
18-
RxCard(
19-
variant: variant,
20-
size: context.knobs.list(
21-
label: 'Size',
22-
options: CardSize.values,
23-
initialOption: CardSize.size2,
24-
labelBuilder: variantLabelBuilder,
25-
),
26-
children: const [StyledText('Hi'), StyledText('This is a test')],
27-
),
13+
SizedBox(
14+
height: 50,
15+
width: 50,
16+
)
2817
],
29-
);
30-
}
31-
32-
return Wrap(
33-
spacing: 12,
34-
runSpacing: 12,
35-
children: CardVariant.values.map(buildCard).toList(),
36-
);
37-
}
38-
39-
@widgetbook.UseCase(
40-
name: 'With button',
41-
type: RxCard,
42-
)
43-
Widget buildRadioUseCase(BuildContext context) {
44-
Widget buildCard(CardVariant variant) {
45-
return Column(
46-
children: [
47-
Text(variant.label),
48-
const SizedBox(height: 10),
49-
RxCard(
50-
variant: variant,
51-
size: context.knobs.list(
52-
label: 'Size',
53-
options: CardSize.values,
54-
initialOption: CardSize.size2,
55-
labelBuilder: variantLabelBuilder,
56-
),
57-
children: const [
58-
StyledText('Hi'),
59-
StyledText('This is a test'),
60-
],
61-
),
62-
const SizedBox(height: 10),
63-
XButton(
64-
label: 'Click me',
65-
onPressed: () {},
66-
),
67-
],
68-
);
69-
}
70-
71-
return Wrap(
72-
spacing: 12,
73-
runSpacing: 12,
74-
children: CardVariant.values.map(buildCard).toList(),
18+
),
7519
);
7620
}

0 commit comments

Comments
 (0)