fxdart 0.0.1 copy "fxdart: ^0.0.1" to clipboard
fxdart: ^0.0.1 copied to clipboard

Provide Debuggable Functional Program

example/lib/main.dart

import 'package:fx_dart/common/num_duration_extensions.dart';
import 'package:fx_dart/vo/vo_bank_account.dart';
import 'package:fx_dart/vo/vo_user.dart';
import 'package:fxdart/fxdart.dart';

import 'common/cli_async.dart';
import 'dummy/bank_accounts_dummy.dart';

main() async {
  // print('start');
  // final list = <String>[];
  // final accounts = await fetchAccounts();
  // for (final account in accounts) {
  //   final user = await fetchUser(account.userId);
  //   list.add(user.name);
  // }
  // final userList = list;
  // print(userList);
  // print('end');
  //
  // print('start');
  // final list = await (await fetchAccounts())
  //     .toStream()
  //     .map((accounts) => accounts.userId)
  //     .asyncMap((userId) => fetchUser(userId))
  //     .map((user) => user.name)
  //     .toList();
  // print(list);
  // print('end');

  // print('start');
  // await fxDart([
  //   await fetchAccounts(),
  //   (accounts) => map((BankAccount account) => account.userId, accounts),
  //   (List<int> userIds) => futureMap(fetchUser, userIds),
  //   (users) => map((User user) => user.name, users),
  //   (names) => runAll((names) => print(names.toList()), names)
  // ]);
  // print('end');

  // print('start');
  // await fxDart([
  //   await fetchAccounts(),
  //   accountToUserId,
  //   idToFetchedUser,
  //   userToName,
  //   printNames,
  // ]);
  // print('end');

  print('start');
  await fxDart([
    await fetchAccounts(),
    ...accountToEachFutureUser,
    printNames,
  ]);
  print('end');
}

List get accountToEachFutureUser =>
    [accountToUserId, idToFetchedUser, userToName];

printNames(names) => runAll((names) => print(names.toList()), names);

userToName(users) => map((User user) => user.name, users);

idToFetchedUser(List<int> userIds) => futureMap(fetchUser, userIds);

accountToUserId(accounts) =>
    map((BankAccount account) => account.userId, accounts);

Future<List<BankAccount>> fetchAccounts() async {
  await sleepAsync(300.ms);
  return bankAccounts;
}

Future<User> fetchUser(int id) async {
  print('fetch User:$id');
  await sleepAsync(300.ms);

  return switch (id) {
    1 => User(id, 'Jason'),
    2 => User(id, 'Dart'),
    3 => User(id, 'Baby'),
    4 => User(id, 'Love'),
    5 => User(id, 'Popcorn'),
    _ => throw Exception('404 not found')
  };
}
1
likes
130
points
23
downloads

Publisher

unverified uploader

Weekly Downloads

Provide Debuggable Functional Program

Homepage

Documentation

API reference

License

MIT (license)

More

Packages that depend on fxdart