Commit 5fb69212 authored by Ian Hickson's avatar Ian Hickson Committed by GitHub

Loader improvements (#6615)

parent a33b70ed
......@@ -22,7 +22,9 @@ void main() {
return new Column(
children: <Widget>[
new Flexible(
child: new Container() // TODO(ianh): replace this with our logo in a Center box
child: new Center(
child: new FlutterLogo(size: 100.0),
),
),
new Flexible(
child: new Builder(
......@@ -38,21 +40,21 @@ void main() {
children.add(new Center(child: new CircularProgressIndicator(value: progressMax > 0 ? progress / progressMax : null)));
}
return new Block(children: children);
}
)
},
),
),
new Flexible(
child: new Block(
padding: new EdgeInsets.symmetric(horizontal: 16.0),
padding: new EdgeInsets.symmetric(horizontal: 24.0),
children: <Widget>[ new Text(explanation, textAlign: TextAlign.center) ]
)
),
]
),
],
);
}
)
)
)
},
),
),
),
);
connectionTimeout = new Timer(const Duration(seconds: 8), () {
setState(() {
......@@ -82,6 +84,17 @@ class LoaderBinding extends WidgetsFlutterBinding {
});
}
);
registerStringServiceExtension(
name: 'loaderShowExplanation',
getter: () => explanation,
setter: (String value) {
connectionTimeout?.cancel();
connectionTimeout = null;
setState(() {
explanation = value;
});
}
);
registerNumericServiceExtension(
name: 'loaderSetProgress',
getter: () => progress,
......
......@@ -263,6 +263,7 @@ class HotRunner extends ResidentRunner {
return 3;
}
_loaderShowMessage('Connecting...', progress: 0);
_loaderShowExplanation('You can use hot reload to update your app on the fly, without restarting it.');
bool devfsResult = await _updateDevFS(
progressReporter: (int progress, int max) {
if (progress % 10 == 0)
......@@ -340,6 +341,10 @@ class HotRunner extends ResidentRunner {
}
}
void _loaderShowExplanation(String explanation) {
currentView.uiIsolate.flutterLoaderShowExplanation(explanation);
}
DevFS _devFS;
Future<Uri> _initDevFS() {
......
......@@ -809,6 +809,13 @@ class Isolate extends ServiceObjectOwner {
}).catchError((dynamic error) => null);
}
void flutterLoaderShowExplanation(String explanation) {
// Invoke loaderShowExplanation; ignore any returned errors.
invokeRpcRaw('ext.flutter.loaderShowExplanation', <String, dynamic> {
'value': explanation
}).catchError((dynamic error) => null);
}
void flutterLoaderSetProgress(double progress) {
// Invoke loaderSetProgress; ignore any returned errors.
invokeRpcRaw('ext.flutter.loaderSetProgress', <String, dynamic>{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment