isolate_classy 1.0.1 copy "isolate_classy: ^1.0.1" to clipboard
isolate_classy: ^1.0.1 copied to clipboard

It makes very easy and elegant for your asynchronous functions to run on isolate.

example/main.dart

import 'dart:developer';
import 'dart:isolate';
import 'dart:math';
import 'package:isolate_classy/isolate_classy.dart';

Future<void> main() async {
  //
  //There are only functions for positional parameters(No more than 6)
  //Just add ".isolate" to the name of a function to make it run on a isolate
  var result=await positionArgument0.isolate();
  print('positionArgument0 return $result');
  result=await positionArgument1.isolate(1);
  print('positionArgument1 return $result');
  result=await positionArgument2.isolate(1,2);
  print('positionArgument2 return $result');
  result=await positionArgument3.isolate(1,2,3);
  print('positionArgument3 return $result');

  result=await positionArgument4.isolate(1,2,3,4);
  print('positionArgument4 return $result');
  result=await positionArgument5.isolate(1,2,3,4,5);
  print('positionArgument5 return $result');
  result=await positionArgument6.isolate(1,2,3,4,5,6);
  print('positionArgument6 return $result');

  //
  //Functions with named parameters, running on isolate(No more than 6 positional parameters)
  //If the function has 1 positional argument called ".isolate1", 2 called ".isolate2", and none direct call ".isolate"
  String value=await nameArgument0.isolate({#desc: "No positional parameter with named parameter function"});
  print('nameArgument0 return $value');
  value=await nameArgument1.isolate1(1,{#desc: "1 positional parameter with named parameter function"});
  print('nameArgument1 return $value');
  value=await nameArgument2.isolate2(1,2,{#desc: "2 positional parameter with named parameter function"});
  print('nameArgument2 return $value');
  value=await nameArgument3.isolate3(1,2,3,{#desc: "3 positional parameter with named parameter function"});
  print('nameArgument3 return $value');

  value=await nameArgument4.isolate4(1,2,3,4,{#desc: "4 positional parameter with named parameter function"});
  print('nameArgument4 return $value');
  value=await nameArgument5.isolate5(1,2,3,4,5,{#desc: "4 positional parameter with named parameter function"});
  print('nameArgument5 return $value');
  value=await nameArgument6.isolate6(1,2,3,4,5,6,{#desc: "4 positional parameter with named parameter function"});
  print('nameArgument6 return $value');
}

Future<String> nameArgument0({required String desc, String? other}) async {
  print("nameArgument0:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value("$desc:${Random().nextInt(1000000)}, other=$other");
}

Future<String> nameArgument1(int a1,{required String desc, String? other}) async {
  print("nameArgument1:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value("$desc:$a1, other=$other");
}

Future<String> nameArgument2(int a1, int a2, {required String desc, String? other}) async {
  print("nameArgument2:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value("$desc:${a1 + a2}, other=$other");
}

Future<String> nameArgument3(int a1, int a2, int a3, {required String desc, String? other}) async {
  print("nameArgument3:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value("$desc:${a1 + a2 + a3}, other=$other");
}

Future<String> nameArgument4(int a1, int a2, int a3, int a4, {required String desc, String? other}) async {
  print("nameArgument4:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value("$desc:${a1 + a2 + a3 + a4}, other=$other");
}

Future<String> nameArgument5(int a1, int a2, int a3, int a4, int a5, {required String desc, String? other}) async {
  print("nameArgument5:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value("$desc:${a1 + a2 + a3 + a4 + a5}, other=$other");
}

Future<String> nameArgument6(int a1, int a2, int a3, int a4, int a5, int a6, {required String desc, String? other}) async {
  print("nameArgument6:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value("$desc:${a1 + a2 + a3 + a4 + a5 + a6}, other=$other");
}

Future<int> positionArgument0() async {
  print("positionArgument0:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value(Random().nextInt(1000000));
}

Future<int> positionArgument1(int a1) async {
  print("positionArgument1:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value(a1);
}

Future<int> positionArgument2(int a1, int a2) async {
  print("positionArgument2:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value(a1 + a2);
}

Future<int> positionArgument3(int a1, int a2, int a3) async {
  print("positionArgument3:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value(a1 + a2 + a3);
}

Future<int> positionArgument4(int a1, int a2, int a3, int a4) async {
  print("positionArgument4:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value(a1 + a2 + a3 + a4);
}

Future<int> positionArgument5(int a1, int a2, int a3, int a4, int a5) async {
  print("positionArgument5:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value(a1 + a2 + a3 + a4 + a5);
}

Future<int> positionArgument6( int a1, int a2, int a3, int a4, int a5, int a6) async {
  print("positionArgument6:${Service.getIsolateId(Isolate.current)}");
  await Future.delayed(const Duration(microseconds: 100));
  return Future.value(a1 + a2 + a3 + a4 + a5 + a6);
}
2
likes
130
points
28
downloads

Publisher

unverified uploader

Weekly Downloads

It makes very easy and elegant for your asynchronous functions to run on isolate.

Repository (GitHub)
View/report issues

Documentation

API reference

License

unknown (license)

More

Packages that depend on isolate_classy