Manage Settings screen for your app

5 min

May 9, 2024

There are pages almost every app has. No big difference in customization them. We need it more in UX reason, people come here for certain reason.
Let’s take settings page today.
  1. Privacy link
  2. Terms link
  3. Contact us
  4. Report error
  5. Share app
  6. Button to rate with info text
  7. Version block


1 Privacy link

We can use as button to external link, or button for bottom sheet. I prefer first choice. We need privacy and policy not only inside of app, we should have it somewhere in web, reachable through link. It is guidelines of AppStore and Playstore. Without link in web, which you will add inside your store account you will be able even submit, without link in app you will get reject, and you are lucky if your first submission went good, some next time reviewer will notice it. Important thing.

So we have button to open external link.


2 Terms link

Everything about what we talked about in previous step goes here too. External link.


3 Contact us

Depending on what is your goal quick MVP or spending time on every small part of app, this button can either have your custom form which will lead to entities in database, or it can simply lead to external email service with prewritten topic as somethings like “Contact your app”. I prefer second one, MVP is everybody.

Also we want to differ users. If we don’t use authorization and database, but we have RecenueCat we can pass RC id of user. It can be handy.


4 Report error

Simple and the same as Contact us, just change topic, that is all


5 Share app
For this button we can use flutter package share_plus
share_plus: ^7.2.1

And use it with this method

void shareApp() async {
    await Share.share(
      Platform.isAndroid ? "Android Link" : "Ios link",
      subject: LocaleKeys.download_app.tr(),
    );
  }
6 Rate app

Let's add dependency

dependencies:
  in_app_review: ^2.0.9

And we can now call pop up for review anytime

import 'package:in_app_review/in_app_review.dart';

final InAppReview inAppReview = InAppReview.instance;

if (await inAppReview.isAvailable()) {
    inAppReview.requestReview();
}
7 Version block

Let's add dependency

dependencies:
  package_info_plus: ^8.0.0

and we can show it in text with these datas

import 'package:package_info_plus/package_info_plus.dart';

...

// Be sure to add this line if `PackageInfo.fromPlatform()` is called before runApp()
WidgetsFlutterBinding.ensureInitialized();

...

PackageInfo packageInfo = await PackageInfo.fromPlatform();

String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;

Get FlutterPlate

I left here 50% discount promocode "UYOTI0MQ" tshhh…🤫

Ship apps faster.