Skip to main content

Using package_info - pubspec.yaml - auto update flutter app

If you need to get the version code or the package name, use this package_info in your pubspec.yaml

package_info: 0.4.1

take the current version from https://pub.dev/packages/package_info

if you neeed to use it before starting the whole application set this in you main.dart and call it from the begining of the initState,

let's suppose you've got a mechanism to have control over your version code, and each time you deliver a new app version code you want your users are forced to update the app, so one of many solutions to do it would be doing and enpoint in your api which get you the current application version code which is going to be compared with the is taken from the installed mobile phone, if they math the app goes on, if they do not, then you force the user to be redirected to a view in which the user is forced to update the new app

  void getVersionCode() async {
PackageInfo packageInfo = await PackageInfo.fromPlatform();
String versionName = packageInfo.version;
String versionCode = packageInfo.buildNumber;
String packageName = packageInfo.packageName;


Response res = await get(urlServer + "/v1/applicationversion",
headers: {'Content-Type': 'application/json;charset=utf-8'});
final jsonResponse = jsonDecode(res.body);
if (versionCode == jsonResponse.toString()) {
if (mounted){
setState(() {
packageName = packageName;
checkingApplicationVersion = true;
});
}
}
}

@override
void initState() {
super.initState();

getVersionCode();

}

@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () {
return new Future(() => false);
},
child: checkingApplicationVersion
? getStandardView()
: ForcingUpdatingApp(packageName));
// child: Text("dada"));
}


in that way before just before getStandardView()  is rendered there is a boolean which is analyzed if it is true, it will render the standard the normal view, if it is false it will be redirected to force the user to update to the new version


now to redirect the user from the app to the pay store, you need to set up in the pubspec.yaml store_redirect in this the version is store_redirect: ^1.0.1
be sure about taking the stable one 

now to use it from code, just use

StoreRedirect.redirect(
androidAppId: "com.example.yourpackagename",
iOSAppId: "585027354");   

and that's it, so you can trigger it from a button ike this

RaisedButton(
onPressed: () {
StoreRedirect.redirect(
androidAppId: packageName,
iOSAppId: "585027354");
},
color: Colors.lightGreen[700],
child: const Text('ACTUALIZAR',
style: TextStyle(fontSize: 17, color: Colors.white)),
)

Comments

Popular posts from this blog

How to deploy a VueJS App using Nginx on Ubuntu

There are thousands of blogs and websites out there explaining how to do a hello world and how to start with VueJS, but in this little post, I’m just going to be explaining how to do deploy a VueJs app after you have run the command through the CLI npm run build . So when you run the command npm run build a dist folder is created and that folder’s got the essential .js files to run our app, when we want to run our app on an Nginx server by default the vue-router is not going to work well so that Nginx does not come ready to work by default with a VueJs app This is basically for a Linux Ubuntu distribution if you’ve got any other Linux distribution just pay attention where is going to be set the www/html folder and the Nginx settings so that this is useful for any Linux distribution  Install and configure nginx sudo apt install nginx Double check to make sure the nginx service is running with command service nginx status, then open your browser and enter url

How to do pagination SpringBoot with Jbctemplate, MySQL

We are going to be working on a topic which is a basic need when doing any app, and it is Pagination. let's get started creating a product table at https://mockaroo.com/ create table products ( id INT, name VARCHAR(50), code VARCHAR(50) ); insert into products (id, name, code) values (1, 'Hettinger-Goyette', '42549-680'); insert into products (id, name, code) values (2, 'Konopelski-Klein', '49527-724'); insert into products (id, name, code) values (3, 'Smitham, Kuhlman and Balistreri', '53238-003'); insert into products (id, name, code) values (4, 'Hettinger, Weissnat and Goodwin', '0143-9916'); insert into products (id, name, code) values (5, 'Rowe Inc', '42291-898'); insert into products (id, name, code) values (6, 'Ernser-Hauck', '10544-617'); insert into products (id, name, code) values (7, 'Maggio and Sons', '68788-9087'); insert into products (id, name,

How to secure SpringBoot with SSL and Tomcat or Undertow

when we are going to take our applications to production mode, we must have an SSL certificate for the FrontEnd and   BackEnd too, in this case, our backend is a  SpringBoot which is using a tomcat embedded server. Terminology TLS vs SSL TLS is the successor to SSL. It is a protocol that ensures privacy between communicating applications. Unless otherwise stated, in this document consider TLS and SSL as interchangable. Certificate (cert) The public half of a public/private key pair with some additional metadata about who issued it etc. It may be freely given to anyone. Private Key A private key can verify that its corresponding certificate/public key was used to encrypt data. It is never given out publicly. Certificate Authority (CA) A company that issues digital certificates. For SSL/TLS certificates, there are a small number of providers (e.g. Symantec/Versign/Thawte, Comodo, GoDaddy, LetsEncrypt) whose certificates are included by most browsers and Operating System