wuchuheng_isolate_channel 0.0.25 copy "wuchuheng_isolate_channel: ^0.0.25" to clipboard
wuchuheng_isolate_channel: ^0.0.25 copied to clipboard

This a library to simplify isolate thread communication.

wuchuheng_isolate_channel

wuchuheng_isolate_channel wuchuheng_isolate_channel Build Status wuchuheng_isolate_channel wuchuheng_isolate_channel wuchuheng_isolate_channel

This a library to simplify isolate thread communication. It abstracts the data transfer between isolate and the main thread into a simple channel, and the channel only needs to listen for data changes and close the channel, thus simplifying the data communication of islate.

Features #

  • channel abstraction.
  • Data Listening.
  • Message Channel Close event.

Getting started #

Depend on it Run this command: With Dart:

$ dart pub add wuchuheng_isolate_channel

With Flutter:

$ flutter pub add wuchuheng_isolate_channel

Usage #

import 'package:wuchuheng_isolate_channel/src/service/task/index.dart';
import 'package:wuchuheng_isolate_channel/wuchuheng_isolate_channel.dart';

enum ChannelName { channel1, channel2, channel3, channel4 }

void main() async {
  /// Isolate logic code.
  final Task task = await IsolateTask((message, channel) async {
    print("isolate: receive $message");
    channel.send('task data');
    channel.onClose((name) => print('Channel is closed. channel: $name.'));
  });

  ///Main thread code.
  final channel = task.createChannel(name: 'channelName')
    ..listen((message, channel) async => print('Receiving isolate messages')).cancel();
  channel.send('Send data to isolate');
  await Future.delayed(Duration(seconds: 1));

  ///Turn off the channel
  channel.close();

  /// listen to future
  final task2 = await IsolateTask<ChannelName>((message, channel) async {
    print(message); //  print: Are you OK? Isolate task
    channel.send('Nice!');
  });
  final channel2 = task2.createChannel(name: ChannelName.channel1);
  final result = channel2.listenToFuture();
  channel2.send('Are you OK? Isolate task');
  print(await result); // print: Nice!
}

Additional information #

contribute to the package, how to file issues, what response they can expect from the package authors, and more.

2
likes
110
pub points
0%
popularity

Publisher

unverified uploader

This a library to simplify isolate thread communication.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

json_annotation, stack_trace, uuid, wuchuheng_hooks, wuchuheng_task_util

More

Packages that depend on wuchuheng_isolate_channel