import 'dart:async'; import 'dart:convert'; import 'dart:typed_data'; import 'package:flutter/services.dart'; class Bubble { static const MethodChannel _channel = const MethodChannel('com.dsaved.bubble.head'); bool shouldBounce; bool showCloseButton; bool allowDragToClose; Bubble({ this.shouldBounce = true, this.allowDragToClose = true, this.showCloseButton = false, }); /// puts app in background and shows floaty-bubble head Future startBubbleHead({bool sendAppToBackground = true}) async { ByteData bytes = await rootBundle.load( 'assets/images/logo1.png', ); var buffer = bytes.buffer; var encodedImage = base64.encode(Uint8List.view(buffer)); await _channel.invokeMethod('startBubbleHead', { "image": encodedImage, "bounce": shouldBounce, "showClose": showCloseButton, "dragToClose": allowDragToClose, "sendAppToBackground": sendAppToBackground, }); } /// closes floaty-bubble head Future stopBubbleHead() async { await _channel.invokeMethod('stopBubbleHead'); } }