【问题标题】:Open dialog at a certain amount of launches of the Flutter App在 Flutter App 启动一定次数时打开对话框
【发布时间】:2022-01-09 12:28:25
【问题描述】:

我有一个应用程序,我希望它在用户启动应用程序 5 次后打开一个对话框。我怎样才能使它成为可能?

我用来打开对话框的包是in_app_review

import 'package:in_app_review/in_app_review.dart';

final InAppReview inAppReview = InAppReview.instance;

 if(userHasLaunchedAppFiveTimes){ 
      if (await inAppReview.isAvailable()) {
         inAppReview.requestReview();
      }
    }

【问题讨论】:

    标签: android flutter dart


    【解决方案1】:

    您必须使用持久存储来实现这一点。你可以使用这个包:shared_preferences 每次用户启动应用程序时,使用以下代码递增 nbTimesLaunched

    SharedPreferences prefs = await SharedPreferences.getInstance();
    int nbTimesLaunched = (prefs.getInt('nbTimesLaunched') ?? 0) + 1;
    await prefs.setInt('nbTimesLaunched', nbTimesLaunched);
    

    然后当你想显示对话框时:

    SharedPreferences prefs = await SharedPreferences.getInstance();
    int nbTimesLaunched = prefs.getInt('nbTimesLaunched') ?? 1;
    if (nbTimesLaunched == 5) {
        // show dialogue
    }
    

    更新

    您可以将第一部分放在 main 中增加计数的位置。请务必致电WidgetsFlutterBinding.ensureInitialized(),否则您会收到错误消息。

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      SharedPreferences prefs = await SharedPreferences.getInstance();
      int nbTimesLaunched = (prefs.getInt('nbTimesLaunched') ?? 0) + 1;
      await prefs.setInt('nbTimesLaunched', nbTimesLaunched);
      runApp(const MyApp());
    }
    

    【讨论】:

    • 感谢您的回答!但是我应该把这段代码放在哪里?
    • @maruthan 您可以将第一部分放在 main 中。我已经更新了我的答案以表明这一点。第二部分只是放在你想显示对话框的任何地方。
    【解决方案2】:

    使用 https://pub.dev/packages/advanced_in_app_review 。它完全符合您的要求。它建立在 in_app_review 之上,并为您提供了一些选项,仅在一段时间/几天后才显示。

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多