Skip to content

Commit 7375a54

Browse files
authored
Responsive layout (#2834)
* fix SplitView stream subscription * Add TabBarView layout, make AppBar responsive * Use IndexedStack to keep the platform view alive in the responsive mode * Show tabBar in embed mode * Hide title in responsive mode * Fix split drag behavior * Add comments * Add semantics to Tabs * Show sample icons in mobile mode * Use const
1 parent cff1de0 commit 7375a54

File tree

3 files changed

+398
-220
lines changed

3 files changed

+398
-220
lines changed

pkgs/sketch_pad/lib/execution/execution.dart

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,11 @@ web.Element _iFrameFactory(int viewId) {
4545
class ExecutionWidget extends StatefulWidget {
4646
final AppServices appServices;
4747

48-
/// Whether the iframe ignores pointer events, for when gestures need to be
49-
/// handled by the Flutter app.
50-
final bool ignorePointer;
48+
final AppModel appModel;
5149

5250
ExecutionWidget({
5351
required this.appServices,
54-
this.ignorePointer = false,
52+
required this.appModel,
5553
super.key,
5654
}) {
5755
_initViewFactory();
@@ -65,18 +63,26 @@ class _ExecutionWidgetState extends State<ExecutionWidget> {
6563
@override
6664
Widget build(BuildContext context) {
6765
final theme = Theme.of(context);
68-
widget.appServices.executionService?.ignorePointer = widget.ignorePointer;
69-
70-
return Container(
71-
color: theme.scaffoldBackgroundColor,
72-
padding: const EdgeInsets.all(denseSpacing),
73-
child: HtmlElementView(
74-
key: _elementViewKey,
75-
viewType: _viewType,
76-
onPlatformViewCreated: (int id) {
77-
widget.appServices.registerExecutionService(executionServiceInstance);
78-
},
79-
),
66+
67+
return ListenableBuilder(
68+
listenable: widget.appModel.splitViewDragState,
69+
builder: (context, _) {
70+
// Ignore pointer events while the Splitter is being dragged.
71+
widget.appServices.executionService?.ignorePointer =
72+
widget.appModel.splitViewDragState.value == SplitDragState.active;
73+
return Container(
74+
color: theme.scaffoldBackgroundColor,
75+
padding: const EdgeInsets.all(denseSpacing),
76+
child: HtmlElementView(
77+
key: _elementViewKey,
78+
viewType: _viewType,
79+
onPlatformViewCreated: (int id) {
80+
widget.appServices
81+
.registerExecutionService(executionServiceInstance);
82+
},
83+
),
84+
);
85+
},
8086
);
8187
}
8288

0 commit comments

Comments
 (0)