[Flutter] package_info_plus를 사용하여 패키지 정보 가져오기

2022-02-01 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를 사용하여 비동기 작업을 수행하는 방법에 대해서도 살펴보았습니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

스무디 한 잔 마시며 끝내는 React Native 책을 출판한지 벌써 2년이 다되었네요.
이번에도 좋은 기회가 있어서 스무디 한 잔 마시며 끝내는 리액트 + TDD 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
Posts