in_app_update_dialog 0.0.1
in_app_update_dialog: ^0.0.1 copied to clipboard
A Flutter plugin for handling Android In-App Updates. Supports Flexible and Immediate update flows with granular control and callbacks.
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:in_app_update_dialog/in_app_update_dialog.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(home: Home());
}
}
class Home extends StatefulWidget {
const Home({super.key});
@override
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> {
InAppUpdateDialog inAppUpdateDialog = InAppUpdateDialog();
@override
void initState() {
checkAndStartUpdate();
super.initState();
}
Future<void> checkAndStartUpdate() async {
final updateInfo = await inAppUpdateDialog.checkForUpdate();
if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) {
if (updateInfo.immediateUpdateAllowed) {
await inAppUpdateDialog.startUpdate(AppUpdateType.immediate);
}
if (updateInfo.flexibleUpdateAllowed) {
inAppUpdateDialog.observeInstallState().listen((state) {
if (kDebugMode) {
print(
"Downloaded: ${state.bytesDownloaded} / ${state.totalBytesToDownload}",
);
}
if (state.installStatus == InstallStatus.downloaded) {
inAppUpdateDialog.completeUpdate();
}
});
await inAppUpdateDialog.startUpdate(AppUpdateType.flexible);
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold();
}
}