Skip to content

Commit b6eb8e2

Browse files
committed
v0.7.4
1 parent dee75bf commit b6eb8e2

File tree

17 files changed

+1318
-85
lines changed

17 files changed

+1318
-85
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 0.7.4
2+
- Add Alignment, AspectRatio, Align, Radius, BorderRadiusGeometry,
3+
BorderRadius, Baseline, ClipRRect, ColoredBox, Directionality,
4+
Expanded, FittedBox, FractionallySizedBox, Stack, Positioned,
5+
SizedBox, Clip, and StackFit
6+
17
## 0.7.3
28
- Add MethodChannel and related wrappers
39

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,26 +233,29 @@ To allow access to a MethodChannel, add a `MethodChannelPermission` to the `perm
233233
## Supported widgets and classes
234234

235235
Currently supported widgets and classes include:
236-
- `Widget`, `StatelessWidget`, `StatefulWidget`, `State`, `Key`, `BuildContext`;
237-
- `ChangeNotifier`;
236+
- `Widget`, `StatelessWidget`, `StatefulWidget`, `State`;
237+
- `ChangeNotifier`, `Key`, `BuildContext`;
238238
- `WidgetsApp`, `Container`, `Column`, `Row`, `Center`;
239+
- `Alignment`, `Align`, `AspectRatio`, `Baseline`;
240+
- `Radius`, `BorderRadius`, `BorderRadiusGeometry`, `Clip`, `ClipRRect`;
241+
- `SizedBox`, `FittedBox`, `FractionallySizedBox`, `ColoredBox`;
242+
- `Stack`, `Positioned`, `StackFit`;
239243
- `Padding`, `EdgeInsetsGeometry`, `EdgeInsets`, `Axis`, `Size`;
240244
- `Offset`, `Velocity`;
241245
- `MainAxisAlignment`, `MainAxisSize`, `CrossAxisAlignment`;
242246
- `AlignmentGeometry`, `Alignment`, `Constraints`, `BoxConstraints`;
243247
- `Color`, `ColorSwatch`, `Colors`, `FontWeight`, `FontStyle`;
244248
- `MaterialApp`, `MaterialColor`, `MaterialAccentColor`;
245-
- `Theme`, `ThemeData`, `TextTheme`;
249+
- `Theme`, `ThemeData`, `TextTheme`, `Directionality`;
246250
- `Decoration`, `BoxDecoration`, `BoxBorder`, `Border`, `BorderSide`;
247251
- `IconData`, `Icons`, `Icon`;
248252
- `Curve`, `Curves`, `SawTooth`, `Interval`, `Threshold`, `Cubic`;
249253
- `Text`, `TextStyle`, `TextEditingController`, `TextField`;
250254
- `TextDirection`, `VerticalDirection`, `TextBaseline`
251255
- `Scaffold`, `ScaffoldMessenger`, `AppBar`, `SnackBar`, `FloatingActionButton`;
252256
- `InkWell`, `TextButton`, `ElevatedButton`, `IconButton`;
253-
- `Card`, `Drawer`;
257+
- `Card`, `Drawer`, `ListView`, `ListTile`, `Spacer`;
254258
- `Image`, `ImageProvider`, `NetworkImage`, `MemoryImage`;
255-
- `ListView`, `ListTile`, `Spacer`;
256259
- `Navigator`, `NavigatorState`, `Builder`;
257260
- `PointerDeviceKind`, `HitTestBehavior`;
258261
- `GestureDetector`, `TapDownDetails`, `TapUpDetails`;

lib/flutter_eval.dart

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import 'package:flutter_eval/src/material/theme_data.dart';
3636
import 'package:flutter_eval/src/painting.dart';
3737
import 'package:flutter_eval/src/painting/alignment.dart';
3838
import 'package:flutter_eval/src/painting/basic_types.dart';
39+
import 'package:flutter_eval/src/painting/border_radius.dart';
3940
import 'package:flutter_eval/src/painting/borders.dart';
4041
import 'package:flutter_eval/src/painting/box_border.dart';
4142
import 'package:flutter_eval/src/painting/box_decoration.dart';
@@ -50,6 +51,7 @@ import 'package:flutter_eval/src/rendering/box.dart';
5051
import 'package:flutter_eval/src/rendering/flex.dart';
5152
import 'package:flutter_eval/src/rendering/object.dart';
5253
import 'package:flutter_eval/src/rendering/proxy_box.dart';
54+
import 'package:flutter_eval/src/rendering/stack.dart';
5355
import 'package:flutter_eval/src/services.dart';
5456
import 'package:flutter_eval/src/services/binary_messenger.dart';
5557
import 'package:flutter_eval/src/services/message_codec.dart';
@@ -189,6 +191,22 @@ class FlutterEvalPlugin implements EvalPlugin {
189191
$MethodCodec.$declaration,
190192
$MethodChannel.$declaration,
191193
$MethodCall.$declaration,
194+
$Alignment.$declaration,
195+
$AspectRatio.$declaration,
196+
$Align.$declaration,
197+
$Radius.$declaration,
198+
$BorderRadiusGeometry.$declaration,
199+
$BorderRadius.$declaration,
200+
$Baseline.$declaration,
201+
$ClipRRect.$declaration,
202+
$ColoredBox.$declaration,
203+
$Directionality.$declaration,
204+
$Expanded.$declaration,
205+
$FittedBox.$declaration,
206+
$FractionallySizedBox.$declaration,
207+
$Stack.$declaration,
208+
$Positioned.$declaration,
209+
$SizedBox.$declaration
192210
];
193211

194212
for (final cls in classes) {
@@ -209,6 +227,8 @@ class FlutterEvalPlugin implements EvalPlugin {
209227
registry.defineBridgeEnum($FilterQuality.$declaration);
210228
registry.defineBridgeEnum($PointerDeviceKind.$declaration);
211229
registry.defineBridgeEnum($HitTestBehavior.$declaration);
230+
registry.defineBridgeEnum($Clip.$declaration);
231+
registry.defineBridgeEnum($StackFit.$declaration);
212232

213233
registry.addSource(DartSource('dart:ui', dartUiSource));
214234

@@ -259,6 +279,8 @@ class FlutterEvalPlugin implements EvalPlugin {
259279
..registerBridgeFunc('dart:ui', 'Color.', $Color.$new)
260280
..registerBridgeFunc('dart:ui', 'Size.', $Size.$new)
261281
..registerBridgeFunc('dart:ui', 'Offset.', $Offset.$new)
282+
..registerBridgeFunc('dart:ui', 'Radius.circular', $Radius.$circular)
283+
..registerBridgeFunc('dart:ui', 'Radius.elliptical', $Radius.$elliptical)
262284
..registerBridgeFunc(
263285
'package:flutter/src/foundation/change_notifier.dart',
264286
'ChangeNotifier.',
@@ -311,6 +333,16 @@ class FlutterEvalPlugin implements EvalPlugin {
311333
'Border.symmetric', $Border.$symmetric)
312334
..registerBridgeFunc('package:flutter/src/painting/box_decoration.dart',
313335
'BoxDecoration.', $BoxDecoration.$new)
336+
..registerBridgeFunc('package:flutter/src/painting/border_radius.dart',
337+
'BorderRadius.all', $BorderRadius.$all)
338+
..registerBridgeFunc('package:flutter/src/painting/border_radius.dart',
339+
'BorderRadius.only', $BorderRadius.$only)
340+
..registerBridgeFunc('package:flutter/src/painting/border_radius.dart',
341+
'BorderRadius.circular', $BorderRadius.$circular)
342+
..registerBridgeFunc('package:flutter/src/painting/border_radius.dart',
343+
'BorderRadius.vertical', $BorderRadius.$vertical)
344+
..registerBridgeFunc('package:flutter/src/painting/border_radius.dart',
345+
'BorderRadius.horizontal', $BorderRadius.$horizontal)
314346
..registerBridgeFunc('package:flutter/src/painting/edge_insets.dart',
315347
'EdgeInsets.symmetric', $EdgeInsets.$symmetric)
316348
..registerBridgeFunc('package:flutter/src/painting/text_style.dart',
@@ -343,6 +375,34 @@ class FlutterEvalPlugin implements EvalPlugin {
343375
'BoxConstraints.expand', $BoxConstraints.$expand)
344376
..registerBridgeFunc('package:flutter/src/widgets/app.dart',
345377
'WidgetsApp.', $WidgetsApp.$new)
378+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
379+
'Alignment.', $Alignment.$new)
380+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
381+
'AspectRatio.', $AspectRatio.$new)
382+
..registerBridgeFunc(
383+
'package:flutter/src/widgets/basic.dart', 'Baseline.', $Baseline.$new)
384+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
385+
'ClipRRect.', $ClipRRect.$new)
386+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
387+
'ColoredBox.', $ColoredBox.$new)
388+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
389+
'Directionality.', $Directionality.$new)
390+
..registerBridgeFunc(
391+
'package:flutter/src/widgets/basic.dart', 'Expanded.', $Expanded.$new)
392+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
393+
'FittedBox.', $FittedBox.$new)
394+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
395+
'FractionallySizedBox.', $FractionallySizedBox.$new)
396+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
397+
'Positioned.', $Positioned.$new)
398+
..registerBridgeFunc(
399+
'package:flutter/src/widgets/basic.dart', 'SizedBox.', $SizedBox.$new)
400+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
401+
'SizedBox.expand', $SizedBox.$expand)
402+
..registerBridgeFunc('package:flutter/src/widgets/basic.dart',
403+
'SizedBox.shrink', $SizedBox.$shrink)
404+
..registerBridgeFunc(
405+
'package:flutter/src/widgets/basic.dart', 'Stack.', $Stack.$new)
346406
..registerBridgeFunc(
347407
'package:flutter/src/widgets/basic.dart', 'Padding.', $Padding.$new)
348408
..registerBridgeFunc(
@@ -459,6 +519,7 @@ class FlutterEvalPlugin implements EvalPlugin {
459519
'dart:ui', 'TextBaseline', $TextBaseline.$values)
460520
..registerBridgeEnumValues(
461521
'dart:ui', 'PointerDeviceKind', $PointerDeviceKind.$values)
522+
..registerBridgeEnumValues('dart:ui', 'Clip', $Clip.$values)
462523
..registerBridgeEnumValues(
463524
'package:flutter/src/painting/basic_types.dart',
464525
'VerticalDirection',

lib/src/material/card.dart

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'package:flutter_eval/src/painting/edge_insets.dart';
66
import 'package:flutter_eval/src/sky_engine/ui/painting.dart';
77
import 'package:flutter_eval/src/widgets/framework.dart';
88

9-
/// dart_eval wrapper for [Card]
9+
/// dart_eval bridge wrapper for [Card]
1010
class $Card implements $Instance {
1111
/// Compile-type type reference for [Card]
1212
static const $type = BridgeTypeRef(
@@ -29,8 +29,13 @@ class $Card implements $Instance {
2929
'surfaceTintColor', BridgeTypeAnnotation($Color.$type), true),
3030
BridgeParameter('elevation',
3131
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.double)), true),
32-
BridgeParameter('margin',
33-
BridgeTypeAnnotation($EdgeInsetsGeometry.$type), true),
32+
BridgeParameter(
33+
'margin',
34+
BridgeTypeAnnotation($EdgeInsetsGeometry.$type,
35+
nullable: true),
36+
true),
37+
BridgeParameter('clipBehavior',
38+
BridgeTypeAnnotation($Clip.$type, nullable: true), true),
3439
BridgeParameter('semanticContainer',
3540
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), true),
3641
BridgeParameter(
@@ -56,8 +61,9 @@ class $Card implements $Instance {
5661
surfaceTintColor: args[3]?.$value,
5762
elevation: args[4]?.$value,
5863
margin: args[5]?.$value,
59-
semanticContainer: args[6]?.$value ?? true,
60-
child: args[7]?.$value,
64+
clipBehavior: args[6]?.$value,
65+
semanticContainer: args[7]?.$value ?? true,
66+
child: args[8]?.$value,
6167
));
6268
}
6369

lib/src/painting.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ library painting;
44
export 'src/painting/alignment.dart';
55
export 'src/painting/basic_types.dart';
66
export 'src/painting/borders.dart';
7+
export 'src/painting/border_radius.dart';
78
export 'src/painting/box_border.dart';
89
export 'src/painting/box_decoration.dart';
910
export 'src/painting/box_fit.dart';
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
import 'package:dart_eval/dart_eval.dart';
2+
import 'package:dart_eval/dart_eval_bridge.dart';
3+
import 'package:dart_eval/stdlib/core.dart';
4+
import 'package:flutter/material.dart';
5+
import 'package:flutter_eval/src/sky_engine/ui/geometry.dart';
6+
7+
/// dart_eval bridge wrapper for [BorderRadiusGeometry]
8+
class $BorderRadiusGeometry implements $Instance {
9+
/// dart_eval type definition for [BorderRadiusGeometry]
10+
static const $type = BridgeTypeRef(BridgeTypeSpec(
11+
'package:flutter/src/painting/border_radius.dart',
12+
'BorderRadiusGeometry'));
13+
14+
/// dart_eval class declaration for [BorderRadiusGeometry]
15+
static const $declaration = BridgeClassDef(
16+
BridgeClassType($type, isAbstract: true),
17+
constructors: {},
18+
wrap: true);
19+
20+
$BorderRadiusGeometry.wrap(this.$value);
21+
22+
@override
23+
final BorderRadiusGeometry $value;
24+
25+
late final $Instance _superclass = $Object($value);
26+
27+
@override
28+
BorderRadiusGeometry get $reified => $value;
29+
30+
@override
31+
$Value? $getProperty(Runtime runtime, String identifier) {
32+
return _superclass.$getProperty(runtime, identifier);
33+
}
34+
35+
@override
36+
int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!);
37+
38+
@override
39+
void $setProperty(Runtime runtime, String identifier, $Value value) {
40+
return _superclass.$setProperty(runtime, identifier, value);
41+
}
42+
}
43+
44+
/// dart_eval bridge wrapper for [BorderRadius]
45+
class $BorderRadius implements $Instance {
46+
/// dart_eval type definition for [BorderRadius]
47+
static const $type = BridgeTypeRef(BridgeTypeSpec(
48+
'package:flutter/src/painting/border_radius.dart', 'BorderRadius'));
49+
50+
/// dart_eval class declaration for [BorderRadius]
51+
static const $declaration = BridgeClassDef(
52+
BridgeClassType($type,
53+
isAbstract: false, $extends: $BorderRadiusGeometry.$type),
54+
constructors: {
55+
'all': BridgeConstructorDef(
56+
BridgeFunctionDef(returns: BridgeTypeAnnotation($type), params: [
57+
BridgeParameter('radius', BridgeTypeAnnotation($Radius.$type), false),
58+
])),
59+
'circular': BridgeConstructorDef(
60+
BridgeFunctionDef(returns: BridgeTypeAnnotation($type), params: [
61+
BridgeParameter('radius',
62+
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.double)), false)
63+
])),
64+
'vertical': BridgeConstructorDef(
65+
BridgeFunctionDef(returns: BridgeTypeAnnotation($type), params: [
66+
BridgeParameter('top', BridgeTypeAnnotation($Radius.$type), false),
67+
BridgeParameter('bottom', BridgeTypeAnnotation($Radius.$type), false)
68+
])),
69+
'horizontal': BridgeConstructorDef(
70+
BridgeFunctionDef(returns: BridgeTypeAnnotation($type), params: [
71+
BridgeParameter('left', BridgeTypeAnnotation($Radius.$type), false),
72+
BridgeParameter('right', BridgeTypeAnnotation($Radius.$type), false)
73+
])),
74+
'only': BridgeConstructorDef(BridgeFunctionDef(
75+
returns: BridgeTypeAnnotation($type),
76+
namedParams: [
77+
BridgeParameter(
78+
'topLeft', BridgeTypeAnnotation($Radius.$type), false),
79+
BridgeParameter(
80+
'topRight', BridgeTypeAnnotation($Radius.$type), false),
81+
BridgeParameter(
82+
'bottomLeft', BridgeTypeAnnotation($Radius.$type), false),
83+
BridgeParameter(
84+
'bottomRight', BridgeTypeAnnotation($Radius.$type), false),
85+
])),
86+
},
87+
wrap: true);
88+
89+
/// Wrap a [BorderRadius] in an [$BorderRadius]
90+
$BorderRadius.wrap(this.$value)
91+
: _superclass = $BorderRadiusGeometry.wrap($value);
92+
93+
final $Instance _superclass;
94+
95+
@override
96+
final BorderRadius $value;
97+
98+
@override
99+
BorderRadius get $reified => $value;
100+
101+
/// Create a new [$BorderRadius] using [BorderRadius.all] from [args]
102+
static $Value? $all(Runtime runtime, $Value? target, List<$Value?> args) {
103+
return $BorderRadius.wrap(BorderRadius.all(args[0]!.$value));
104+
}
105+
106+
/// Create a new [$BorderRadius] using [BorderRadius.circular] from [args]
107+
static $Value? $circular(
108+
Runtime runtime, $Value? target, List<$Value?> args) {
109+
return $BorderRadius.wrap(BorderRadius.circular(args[0]!.$value));
110+
}
111+
112+
static $Value? $vertical(
113+
Runtime runtime, $Value? target, List<$Value?> args) {
114+
return $BorderRadius.wrap(BorderRadius.vertical(
115+
top: args[0]!.$value ?? Radius.zero,
116+
bottom: args[1]!.$value ?? Radius.zero,
117+
));
118+
}
119+
120+
static $Value? $horizontal(
121+
Runtime runtime, $Value? target, List<$Value?> args) {
122+
return $BorderRadius.wrap(BorderRadius.horizontal(
123+
left: args[0]!.$value ?? Radius.zero,
124+
right: args[1]!.$value ?? Radius.zero,
125+
));
126+
}
127+
128+
/// Create a new [$BorderRadius] using [BorderRadius.only] from [args]
129+
static $Value? $only(Runtime runtime, $Value? target, List<$Value?> args) {
130+
return $BorderRadius.wrap(BorderRadius.only(
131+
topLeft: args[0]!.$value ?? Radius.zero,
132+
topRight: args[1]!.$value ?? Radius.zero,
133+
bottomLeft: args[2]!.$value ?? Radius.zero,
134+
bottomRight: args[3]!.$value ?? Radius.zero,
135+
));
136+
}
137+
138+
@override
139+
$Value? $getProperty(Runtime runtime, String identifier) {
140+
return _superclass.$getProperty(runtime, identifier);
141+
}
142+
143+
@override
144+
int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!);
145+
146+
@override
147+
void $setProperty(Runtime runtime, String identifier, $Value value) {
148+
return _superclass.$setProperty(runtime, identifier, value);
149+
}
150+
}

lib/src/rendering.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ export 'src/rendering/box.dart';
55
export 'src/rendering/flex.dart';
66
export 'src/rendering/object.dart';
77
export 'src/rendering/proxy_box.dart';
8+
export 'src/rendering/stack.dart';
89
''';

0 commit comments

Comments
 (0)