whatsapp_share_improved 2.0.3
whatsapp_share_improved: ^2.0.3 copied to clipboard
Fork from whatsapp_share with namespace and fix AGP 7+ and y embedding v2
example/lib/main.dart
import 'dart:async';
import 'dart:developer';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:whatsapp_share_improved/whatsapp_share_improved.dart';
import 'package:image_picker/image_picker.dart';
import 'package:path_provider/path_provider.dart';
import 'package:screenshot/screenshot.dart';
void main() => runApp(MyApp());
// ignore: must_be_immutable
class MyApp extends StatelessWidget {
final _controller = ScreenshotController();
File? _image;
MyApp({super.key});
Future<void> share() async {
await WhatsappShareImproved.share(
text: 'Example share text',
linkUrl: 'https://flutter.dev/',
phone: '911234567890',
);
}
Future<void> shareFile() async {
await getImage();
Directory? directory;
if (Platform.isAndroid) {
directory = await getExternalStorageDirectory();
} else {
directory = await getApplicationDocumentsDirectory();
}
debugPrint('${directory?.path} / ${_image?.path}');
await WhatsappShareImproved.shareFile(
phone: '911234567890',
filePath: ["${_image?.path}"],
);
}
Future<void> isInstalled() async {
final val =
await WhatsappShareImproved.isInstalled(package: Package.whatsapp);
debugPrint('Whatsapp is installed: $val');
}
Future<void> shareScreenShot() async {
Directory? directory;
if (Platform.isAndroid) {
directory = await getExternalStorageDirectory();
} else {
directory = await getApplicationDocumentsDirectory();
}
final String? localPath = await _controller.captureAndSave(directory!.path);
await Future.delayed(const Duration(seconds: 1));
if (localPath == null) {
log("localPath is null");
}
await WhatsappShareImproved.shareFile(
phone: '911234567890',
filePath: [localPath!],
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Whatsapp Share'),
),
body: Center(
child: Screenshot(
controller: _controller,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: share,
child: const Text('Share text and link'),
),
ElevatedButton(
onPressed: shareFile,
child: const Text('Share Image'),
),
ElevatedButton(
onPressed: shareScreenShot,
child: const Text('Share screenshot'),
),
ElevatedButton(
onPressed: isInstalled,
child: const Text('is Installed'),
),
],
),
),
),
),
);
}
///Pick Image From gallery using image_picker plugin
Future getImage() async {
try {
XFile? pickedFile =
// ignore: deprecated_member_use
await ImagePicker().pickImage(source: ImageSource.gallery);
if (pickedFile != null) {
_image = File(pickedFile.path);
} else {}
} catch (er) {
log(er.toString());
}
}
}