1- import 'dart:developer' ;
2- import 'dart:isolate' ;
3- import 'dart:ui' ;
1+ import 'dart:async' ;
42
53import 'package:flutter/material.dart' ;
64import 'package:flutter_overlay_window/flutter_overlay_window.dart' ;
@@ -13,31 +11,28 @@ class MessangerChatHead extends StatefulWidget {
1311}
1412
1513class _MessangerChatHeadState extends State <MessangerChatHead > {
14+ StreamSubscription <dynamic >? _overlaySubscription;
1615 Color color = const Color (0xFFFFFFFF );
1716 BoxShape _currentShape = BoxShape .circle;
18- static const String _kPortNameOverlay = 'OVERLAY' ;
19- static const String _kPortNameHome = 'UI' ;
20- final _receivePort = ReceivePort ();
21- SendPort ? homePort;
2217 String ? messageFromOverlay;
2318
2419 @override
2520 void initState () {
2621 super .initState ();
27- if (homePort != null ) return ;
28- final res = IsolateNameServer .registerPortWithName (
29- _receivePort.sendPort,
30- _kPortNameOverlay,
31- );
32- log ("$res : HOME" );
33- _receivePort.listen ((message) {
34- log ("message from UI: $message " );
22+ _overlaySubscription = FlutterOverlayWindow .overlayListener.listen ((message) {
23+ if (! mounted) return ;
3524 setState (() {
3625 messageFromOverlay = 'message from UI: $message ' ;
3726 });
3827 });
3928 }
4029
30+ @override
31+ void dispose () {
32+ _overlaySubscription? .cancel ();
33+ super .dispose ();
34+ }
35+
4136 @override
4237 Widget build (BuildContext context) {
4338 return Material (
@@ -79,10 +74,7 @@ class _MessangerChatHeadState extends State<MessangerChatHead> {
7974 backgroundColor: Colors .black,
8075 ),
8176 onPressed: () {
82- homePort ?? = IsolateNameServer .lookupPortByName (
83- _kPortNameHome,
84- );
85- homePort? .send ('Date: ${DateTime .now ()}' );
77+ FlutterOverlayWindow .shareData ('Date: ${DateTime .now ()}' );
8678 },
8779 child: const Text ("Send message to UI" ),
8880 ),
0 commit comments