app_review

by fluttercommunity

fluttercommunity / app_review

App Review - Request and Write Reviews and Open Store Listing for Android and iOS in Flutter. Mainta...

174 Stars 48 Forks Last release: 9 months ago (1.1.0) MIT License 93 Commits 1 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Flutter Community: app_review

Buy Me A Coffee Donate github pages GitHub stars

app_review

alt text

Online Demo: https://fluttercommunity.github.io/app_review/

Description

Flutter Plugin for Requesting and Writing Reviews in Google Play and the App Store. Apps have to be published for the app to be found correctly.

How To Use

It's important to note that the App ID must match the App ID in Google Play and iTunes Connect. This can be changed in the Info.plist on iOS and app/build.gradle on Android. You will use this App ID for other services like Firebase, Admob and publishing the app.

Android

Opens In App Review but only if Play Services are installed on the device and the App is downloaded through the Play Store. Check out the [official documentation].

iOS

iOS manages the pop-up requesting review within an app. You can call the code through

AppReview.requestReview
and if the user has "rate in apps" turned on, iOS will send "the request for the review" pop up. This is the required way for requesting reviews after iOS 10.3.

In debug mode it will always display. In apps through TestFlight, the

AppReview.requestReview
does nothing.
import 'dart:io';
import 'package:app_review/app_review.dart';
import 'package:flutter/material.dart';

@override void initState() { super.initState(); if (Platform.isIOS) { AppReview.requestReview.then((onValue) { print(onValue); }); } }

Example

import 'package:app_review/app_review.dart';
import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget { @override _MyAppState createState() => new _MyAppState(); }

class _MyAppState extends State { @override initState() { super.initState(); AppReview.getAppID.then((onValue) { setState(() { appID = onValue; }); print("App ID" + appID); }); }

String appID = ""; String output = "";

@override Widget build(BuildContext context) { return new MaterialApp( home: new Scaffold( appBar: new AppBar( title: new Text('App Review'), ), body: new SingleChildScrollView( child: new ListBody( children: [ new Container( height: 40.0, ), new ListTile( leading: new Icon(Icons.info), title: new Text('App ID'), subtitle: new Text(appID), onTap: () { AppReview.getAppID.then((onValue) { setState(() { output = onValue; }); print(onValue); }); }, ), new Divider( height: 20.0, ), new ListTile( leading: new Icon( Icons.shop, ), title: new Text('View Store Page'), onTap: () { AppReview.storeListing.then((onValue) { setState(() { output = onValue; }); print(onValue); }); }, ), new Divider( height: 20.0, ), new ListTile( leading: new Icon( Icons.star, ), title: new Text('Request Review'), onTap: () { AppReview.requestReview.then((onValue) { setState(() { output = onValue; }); print(onValue); }); }, ), new Divider( height: 20.0, ), new ListTile( leading: new Icon( Icons.note_add, ), title: new Text('Write a New Review'), onTap: () { AppReview.writeReview.then((onValue) { setState(() { output = onValue; }); print(onValue); }); }, ), new Divider( height: 20.0, ), new ListTile( title: new Text(output), ), ], ), ), ), ); } }

What is onValue value?

Just a sanity check to make sure there were no errors.

Android

You could store a timestamp to know when to call again.

iOS

It doesnt really matter.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.