Devhq provide a lot of services
In This Blog i will show you how you can implement Update function in flutter app without publishing app on playstore

Follow steps
Step 1 : Create a New repository on Github And Create a new release with Release build of flutter app
Create new release

1 in Tag Section You have to Write Version name like 1.1.0 version
2 In Title section write you update titile
4 You have to upload you flutter apk file
After Completing that you repository look like this

For More Info Watch this Video
Step 2 : Make a New Controller in you app and write this codes
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;
import 'package:package_info_plus/package_info_plus.dart';
import 'package:url_launcher/url_launcher.dart';
class AppController extends GetxController {
RxString oldVersion = "".obs;
RxString currentVersion = "".obs;
RxString newAppUrl = "".obs;
void onInit() async {
super.onInit();
PackageInfo packageInfo = await PackageInfo.fromPlatform();
currentVersion.value = packageInfo.version;
print(currentVersion.value);
checkLatestVersion();
}
Future<void> checkLatestVersion() async {
const repositoryOwner = 'MrNitishroy';
const repositoryName = 'Sampark';
final response = await http.get(Uri.parse(
'https://api.github.com/repos/$repositoryOwner/$repositoryName/releases/latest',
));
if (response.statusCode == 200) {
final Map<String, dynamic> data = json.decode(response.body);
final tagName = data['tag_name'];
oldVersion.value = tagName;
final assets = data['assets'] as List<dynamic>;
for (final asset in assets) {
final assetName = asset['name'];
final assetDownloadUrl = asset['browser_download_url'];
newAppUrl.value = assetDownloadUrl;
}
if (currentVersion.value != oldVersion.value) {
checkUpdate();
}
} else {
print(
'Failed to fetch GitHub release info. Status code: ${response.statusCode}');
}
}
void checkUpdate() {
Get.rawSnackbar(
message: "New Update Available",
mainButton: TextButton(
onPressed: () {
launchUrl(
Uri.parse(newAppUrl.value),
mode: LaunchMode.externalApplication,
);
Get.back();
},
child: Text("Update"),
),
duration: Duration(days: 1),
icon: Icon(Icons.update_sharp),
snackStyle: SnackStyle.FLOATING,
barBlur: 20,
leftBarIndicatorColor: Colors.blue,
);
}
}
DartThis code for Check new Update
Future<void> checkLatestVersion() async {
const repositoryOwner = 'MrNitishroy';
const repositoryName = 'Sampark';
final response = await http.get(Uri.parse(
'https://api.github.com/repos/$repositoryOwner/$repositoryName/releases/latest',
));
if (response.statusCode == 200) {
final Map<String, dynamic> data = json.decode(response.body);
final tagName = data['tag_name'];
oldVersion.value = tagName;
final assets = data['assets'] as List<dynamic>;
for (final asset in assets) {
final assetName = asset['name'];
final assetDownloadUrl = asset['browser_download_url'];
newAppUrl.value = assetDownloadUrl;
}
if (currentVersion.value != oldVersion.value) {
checkUpdate();
}
} else {
print(
'Failed to fetch GitHub release info. Status code: ${response.statusCode}');
}
}
Dart