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