[Flutter] package_info_plusを使ってパッケージ情報取得

2022-01-30 hit count image

Flutterでpackage_info_plusを使ってアプリの名前、パッケージ名やバージョン情報を取得する方法について説明します。

概要

今回のブログポストではpackage_info_plusを使ってアプリの名前、パッケージ名、バージョンやビルド番号を取得する方法について説明します。

このブログポストで紹介するソースコードは下記のリンクで確認できます。

package_info_plusのインストール

Flutterでpackage_info_plusの使い方を確認するため、下記のコマンドを使ってFlutterの新しいプロジェクトを生成します。

flutter create package_info_plus_example

その後、次のコマンドを実行してpackage_info_plusパッケージをインストールします。

flutter pub add package_info_plus

次は、このようにインストールしたpackage_info_plusを使う方法について説明します。

使い方

package_info_plusを使うと次のような情報を取得することができます。

import 'package:package_info_plus/package_info_plus.dart';

PackageInfo packageInfo = await PackageInfo.fromPlatform();

String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;
  • appName: アプリの名前
  • packageName: アプリのパッケージ名
  • version: アプリのバージョン
  • buildNumber: アプリのビルド番号

例題

今までの内容を確認するため、lib/main.dartファイルを開いて下記のように修正します。

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  Future<PackageInfo> _getPackageInfo() {
    return PackageInfo.fromPlatform();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Package Info Plus'),
      ),
      body: Center(
        child: FutureBuilder<PackageInfo>(
          future: _getPackageInfo(),
          builder: (BuildContext context, AsyncSnapshot<PackageInfo> snapshot) {
            if (snapshot.hasError) {
              return const Text('ERROR');
            } else if (!snapshot.hasData) {
              return const Text('Loading...');
            }

            final data = snapshot.data!;

            return Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text('App Name: ${data.appName}'),
                Text('Package Name: ${data.packageName}'),
                Text('Version: ${data.version}'),
                Text('Build Number: ${data.buildNumber}'),
              ],
            );
          },
        ),
      ),
    );
  }
}

アプリを起動されると、FutureBuilderが実行され、package_info_plusで情報を取得します。

Future<PackageInfo> _getPackageInfo() {
  return PackageInfo.fromPlatform();
}

FutureBuilder<PackageInfo>(
  future: _getPackageInfo(),
  builder: (BuildContext context, AsyncSnapshot<PackageInfo> snapshot) {
    ...
  },
),

無事に情報を取得したら、次のようにアプリの名前、パッケージ名、バージョンやビルド番号を出力します。

FutureBuilder<PackageInfo>(
  future: _getPackageInfo(),
  builder: (BuildContext context, AsyncSnapshot<PackageInfo> snapshot) {
    ...
    final data = snapshot.data!;

    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text('App Name: ${data.appName}'),
        Text('Package Name: ${data.packageName}'),
        Text('Version: ${data.version}'),
        Text('Build Number: ${data.buildNumber}'),
      ],
    );
  },
),

確認

このように修正した例だを実行すると次のような画面を確認することができます。

Flutter - package_info_plus example

完了

これでpackage_info_plusを使ってアプリの名前、パッケージ名、バージョンやビルド番号を取得する方法について見て見ました。また、FutureBuilderを使って非同期処理を実行する方法についても見て見ました。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts