Commit 3cb539fd authored by Danny Tuppeny's avatar Danny Tuppeny Committed by Danny Tuppeny

Switch streams to Future<Lists>

parent e456330a
...@@ -47,7 +47,7 @@ class EmulatorsCommand extends FlutterCommand { ...@@ -47,7 +47,7 @@ class EmulatorsCommand extends FlutterCommand {
Future<Null> _launchEmulator(String id) async { Future<Null> _launchEmulator(String id) async {
final List<Emulator> emulators = final List<Emulator> emulators =
await emulatorManager.getEmulatorsMatching(id).toList(); await emulatorManager.getEmulatorsMatching(id);
if (emulators.isEmpty) { if (emulators.isEmpty) {
printStatus("No emulator found that matches '$id'."); printStatus("No emulator found that matches '$id'.");
...@@ -62,8 +62,8 @@ class EmulatorsCommand extends FlutterCommand { ...@@ -62,8 +62,8 @@ class EmulatorsCommand extends FlutterCommand {
Future<Null> _listEmulators(String searchText) async { Future<Null> _listEmulators(String searchText) async {
final List<Emulator> emulators = final List<Emulator> emulators =
searchText == null searchText == null
? await emulatorManager.getAllAvailableEmulators().toList() ? await emulatorManager.getAllAvailableEmulators()
: await emulatorManager.getEmulatorsMatching(searchText).toList(); : await emulatorManager.getEmulatorsMatching(searchText);
if (emulators.isEmpty) { if (emulators.isEmpty) {
printStatus('No emulators available.\n\n' printStatus('No emulators available.\n\n'
......
...@@ -24,8 +24,8 @@ class EmulatorManager { ...@@ -24,8 +24,8 @@ class EmulatorManager {
final List<EmulatorDiscovery> _emulatorDiscoverers = <EmulatorDiscovery>[]; final List<EmulatorDiscovery> _emulatorDiscoverers = <EmulatorDiscovery>[];
Stream<Emulator> getEmulatorsMatching(String searchText) async* { Future<List<Emulator>> getEmulatorsMatching(String searchText) async {
final List<Emulator> emulators = await getAllAvailableEmulators().toList(); final List<Emulator> emulators = await getAllAvailableEmulators();
searchText = searchText.toLowerCase(); searchText = searchText.toLowerCase();
bool exactlyMatchesEmulatorId(Emulator emulator) => bool exactlyMatchesEmulatorId(Emulator emulator) =>
emulator.id?.toLowerCase() == searchText || emulator.id?.toLowerCase() == searchText ||
...@@ -37,13 +37,11 @@ class EmulatorManager { ...@@ -37,13 +37,11 @@ class EmulatorManager {
final Emulator exactMatch = emulators.firstWhere( final Emulator exactMatch = emulators.firstWhere(
exactlyMatchesEmulatorId, orElse: () => null); exactlyMatchesEmulatorId, orElse: () => null);
if (exactMatch != null) { if (exactMatch != null) {
yield exactMatch; return <Emulator>[exactMatch];
return;
} }
// Match on a id or name starting with [emulatorId]. // Match on a id or name starting with [emulatorId].
for (Emulator emulator in emulators.where(startsWithEmulatorId)) return emulators.where(startsWithEmulatorId).toList();
yield emulator;
} }
Iterable<EmulatorDiscovery> get _platformDiscoverers { Iterable<EmulatorDiscovery> get _platformDiscoverers {
...@@ -51,12 +49,12 @@ class EmulatorManager { ...@@ -51,12 +49,12 @@ class EmulatorManager {
} }
/// Return the list of all available emulators. /// Return the list of all available emulators.
Stream<Emulator> getAllAvailableEmulators() async* { Future<List<Emulator>> getAllAvailableEmulators() async {
for (EmulatorDiscovery discoverer in _platformDiscoverers) { final List<Emulator> emulators = <Emulator>[];
for (Emulator emulator in await discoverer.emulators) { Future.forEach(_platformDiscoverers, (EmulatorDiscovery discoverer) async {
yield emulator; emulators.addAll(await discoverer.emulators);
} });
} return emulators;
} }
/// Whether we're capable of listing any emulators given the current environment configuration. /// Whether we're capable of listing any emulators given the current environment configuration.
......
...@@ -14,7 +14,7 @@ void main() { ...@@ -14,7 +14,7 @@ void main() {
testUsingContext('getEmulators', () async { testUsingContext('getEmulators', () async {
// Test that EmulatorManager.getEmulators() doesn't throw. // Test that EmulatorManager.getEmulators() doesn't throw.
final EmulatorManager emulatorManager = new EmulatorManager(); final EmulatorManager emulatorManager = new EmulatorManager();
final List<Emulator> emulators = await emulatorManager.getAllAvailableEmulators().toList(); final List<Emulator> emulators = await emulatorManager.getAllAvailableEmulators();
expect(emulators, isList); expect(emulators, isList);
}); });
...@@ -26,7 +26,7 @@ void main() { ...@@ -26,7 +26,7 @@ void main() {
final EmulatorManager emulatorManager = new TestEmulatorManager(emulators); final EmulatorManager emulatorManager = new TestEmulatorManager(emulators);
Future<Null> expectEmulator(String id, List<Emulator> expected) async { Future<Null> expectEmulator(String id, List<Emulator> expected) async {
expect(await emulatorManager.getEmulatorsMatching(id).toList(), expected); expect(await emulatorManager.getEmulatorsMatching(id), expected);
} }
expectEmulator('Nexus_5', <Emulator>[emulator1]); expectEmulator('Nexus_5', <Emulator>[emulator1]);
expectEmulator('Nexus_5X', <Emulator>[emulator2]); expectEmulator('Nexus_5X', <Emulator>[emulator2]);
...@@ -44,8 +44,8 @@ class TestEmulatorManager extends EmulatorManager { ...@@ -44,8 +44,8 @@ class TestEmulatorManager extends EmulatorManager {
TestEmulatorManager(this.allEmulators); TestEmulatorManager(this.allEmulators);
@override @override
Stream<Emulator> getAllAvailableEmulators() { Future<List<Emulator>> getAllAvailableEmulators() {
return new Stream<Emulator>.fromIterable(allEmulators); return new Future<List<Emulator>>.value(allEmulators);
} }
} }
......
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