Flutter判断应用首次运行插件is_first_run_plus的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter判断应用首次运行插件is_first_run_plus的使用

这是一个基于Julian Aßmann的插件 flutter_is_first_run 的分叉版本。

该插件用于检查应用程序是否是第一次运行。它内部使用了 hive_flutterpackage_info_plus 插件。

开始使用

在你的 pubspec.yaml 文件中添加 is_first_run_plus 依赖:

dependencies:
  is_first_run_plus: ^最新版本号

然后运行 flutter pub get 来获取这个包。

使用方法

首先,你需要导入 is_first_run_plus.dart 文件:

import 'package:is_first_run_plus/is_first_run_plus.dart';

检查应用是否是第一次运行

你可以使用 IsFirstRun.isFirstRun() 方法来检查应用是否是第一次运行:

bool firstRun = await IsFirstRun.isFirstRun();

如果这是安装应用后第一次调用此方法,那么该方法将返回 true,直到应用关闭并重新启动。重新启动应用后,它会返回 false

检查是否是第一次调用

你还可以使用 IsFirstRun.isFirstCall() 方法来检查是否是第一次调用:

bool firstCall = await IsFirstRun.isFirstCall();

如果这是安装应用后第一次调用此方法,那么该方法将返回 true,之后每次调用都会返回 false

检查特定版本的应用是否是第一次运行或调用

你也可以使用带 build 参数的方法来检查特定版本的应用是否是第一次运行或调用:

bool firstRunSinceBuild66 = await IsFirstRun.isFirstRunSince(build: 66);
bool firstCallSinceBuild66 = await IsFirstRun.isFirstCallSince(build: 66);

重置插件

你可以通过调用 IsFirstRun.reset() 方法来重置插件:

await IsFirstRun.reset();

重置后,再次调用 isFirstRun() 会返回 true,直到应用关闭并重新启动。重置后,第一次调用 isFirstCall() 也会返回 true,之后每次调用都会返回 false

示例代码

以下是一个简单的页面,展示了如何使用 IsFirstRun.isFirstRun() 方法的结果。按钮允许你再次调用 IsFirstRun.isFirstRun() 方法,重置按钮则调用 IsFirstRun.reset() 方法。

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // 这个小部件是你的应用的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'is_first_run demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool? _isFirstRun;
  bool? _isFirstCall;

  void _checkFirstRun() async {
    bool ifr = await IsFirstRun.isFirstRun();
    setState(() {
      _isFirstRun = ifr;
    });
  }

  void _checkFirstCall() async {
    bool ifc = await IsFirstRun.isFirstCall();
    setState(() {
      _isFirstCall = ifc;
    });
  }

  void _reset() async {
    await IsFirstRun.reset();
    _checkFirstRun();
    _checkFirstCall();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
                child: Text('检查是否是第一次运行'),
                onPressed: _checkFirstRun),
            ElevatedButton(
                child: Text('检查是否是第一次调用'),
                onPressed: _checkFirstCall),
            ElevatedButton(
                child: Text('重置'),
                onPressed: _reset),
            SizedBox(height: 24),
            Text(
                '是否是第一次运行: ${_isFirstRun != null ? _isFirstRun.toString() : '未知'}'),
            Text(
                '是否是第一次调用: ${_isFirstCall != null ? _isFirstCall.toString() : '未知'}'),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter判断应用首次运行插件is_first_run_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter判断应用首次运行插件is_first_run_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,is_first_run_plus 是一个用于 Flutter 的插件,它可以帮助你判断应用是否是首次运行。以下是如何在 Flutter 项目中使用 is_first_run_plus 插件的详细步骤和代码示例。

步骤 1: 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 is_first_run_plus 依赖:

dependencies:
  flutter:
    sdk: flutter
  is_first_run_plus: ^0.4.0  # 请确保使用最新版本

然后运行 flutter pub get 来获取依赖。

步骤 2: 导入插件

在你的 Dart 文件中导入 is_first_run_plus 插件:

import 'package:is_first_run_plus/is_first_run_plus.dart';

步骤 3: 使用插件

你可以在应用启动时检查是否是首次运行,并相应地执行一些操作。以下是一个示例代码,展示了如何在 main.dart 中使用 is_first_run_plus

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 检查是否是首次运行
  final isFirstRun = await IsFirstRun().isFirstRun;

  runApp(MyApp(isFirstRun: isFirstRun));
}

class MyApp extends StatelessWidget {
  final bool isFirstRun;

  MyApp({required this.isFirstRun});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('First Run Check'),
        ),
        body: Center(
          child: Text(
            isFirstRun ? 'This is the first run!' : 'This is not the first run.',
            style: TextStyle(fontSize: 24),
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们在 main 函数中异步调用 IsFirstRun().isFirstRun 来检查是否是首次运行,并将结果传递给 MyApp 组件。然后在 MyApp 组件中,我们根据 isFirstRun 的值显示不同的文本。

步骤 4: 处理首次运行逻辑

在实际应用中,你可能希望在首次运行时执行一些特定的操作,比如显示欢迎屏幕、引导用户完成设置等。你可以通过条件语句来实现这些逻辑:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final isFirstRun = await IsFirstRun().isFirstRun;

  if (isFirstRun) {
    // 执行首次运行的逻辑,例如显示欢迎屏幕
    // await showWelcomeScreen();
    // 标记为非首次运行(可选,因为插件在检测到首次运行后会自动更新状态)
    await IsFirstRun().markAsNotFirstRun();
  }

  runApp(MyApp());
}

注意:在上面的代码中,markAsNotFirstRun() 方法是可选的,因为插件在检测到首次运行后会自动更新其状态。但如果你需要在其他地方手动控制这个状态,可以调用这个方法。

通过上述步骤和代码示例,你应该能够在 Flutter 应用中成功使用 is_first_run_plus 插件来判断应用是否是首次运行,并相应地执行一些操作。

回到顶部