diff --git a/packages/flutter/bin/loader/loader_app.dart b/packages/flutter/bin/loader/loader_app.dart index ad2ec4e0964..fd1a8954809 100644 --- a/packages/flutter/bin/loader/loader_app.dart +++ b/packages/flutter/bin/loader/loader_app.dart @@ -22,7 +22,9 @@ void main() { return new Column( children: [ 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: [ 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, diff --git a/packages/flutter_tools/lib/src/hot.dart b/packages/flutter_tools/lib/src/hot.dart index 4e4f4a077f9..eee05917822 100644 --- a/packages/flutter_tools/lib/src/hot.dart +++ b/packages/flutter_tools/lib/src/hot.dart @@ -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 _initDevFS() { diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 2940ac4b221..e1f8fa2652f 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart @@ -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', { + 'value': explanation + }).catchError((dynamic error) => null); + } + void flutterLoaderSetProgress(double progress) { // Invoke loaderSetProgress; ignore any returned errors. invokeRpcRaw('ext.flutter.loaderSetProgress', {