| import 'dart:async'; |
| |
| import 'package:sky/mojo/embedder.dart' show embedder; |
| import 'package:sky/widgets.dart'; |
| |
| import '../../dart/lib/echo_client.dart' show EchoClient; |
| |
| log(String msg) { |
| DateTime now = new DateTime.now(); |
| print('${now.toString()} $msg'); |
| } |
| |
| class EchoApp extends App { |
| final EchoClient _c; |
| |
| EchoApp() |
| : _c = new EchoClient( |
| embedder.connectToService, 'https://mojo.v.io/echo_server.mojo') {} |
| |
| int seq = 0; |
| String sendMsg = ''; |
| String recvMsg = ''; |
| |
| Future doEcho() async { |
| log('EchoApp.doEcho'); |
| setState(() { |
| sendMsg = seq.toString(); |
| recvMsg = ''; |
| }); |
| seq++; |
| log('setState sendMsg done'); |
| |
| String recvMsgAsync = await _c.echo(sendMsg); |
| |
| setState(() { |
| recvMsg = recvMsgAsync; |
| }); |
| log('setState recvMsg done'); |
| } |
| |
| // TODO(sadovsky): I don't think Sky calls App.close(). |
| Future close({bool immediate: false}) async { |
| log('EchoApp.close'); |
| return await _c.close(immediate: immediate); |
| } |
| |
| Widget build() { |
| return new Container( |
| decoration: |
| const BoxDecoration(backgroundColor: const Color(0xFF00ACC1)), |
| child: new Flex([ |
| new RaisedButton(child: new Text('doEcho'), onPressed: doEcho), |
| new Text('Sent message $sendMsg'), |
| new Text('Received message $recvMsg') |
| ], direction: FlexDirection.vertical)); |
| } |
| } |
| |
| void main() { |
| runApp(new EchoApp()); |
| } |