Slackコミュニティに
無料で参加する
Flutterラボの
プレミアム会員になる
【Flutter】デバイス情報やOSバージョンを取得する(device_info_plus)
2021.11.14
もともとはdevice_infoパッケージでデバイス情報が取得できましたが、新しくWEBやデスクトップのプラットフォームにも対応したdevice_info_plusパッケージで一括取得できるようになったので使い方を紹介します。
※今回はWEBかAndroidのときにデバイス情報を取得して表示するようにしていますが、iOSやデスクトップアプリの際も使い方は同じなので同様に分岐を増やして使うことができます。
以下にコメントアウト付きの全コードを載せておくので、参考にしてください。
import 'dart:io';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.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(title: 'device_info_plus'),
    );
  }
}
class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;
  @override
  State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
  // DeviceInfoPluginをインスタンス化
  DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: buildFutureBuilder(),
      ),
    );
  }
  Widget buildFutureBuilder() {
    // WEBのとき
    if(kIsWeb) {
      return FutureBuilder<WebBrowserInfo>(
        future: Future<WebBrowserInfo>(() async {
          // データ取得
          return (await deviceInfo.webBrowserInfo);
        }),
        builder: (context, snapShot) {
          if (snapShot.connectionState == ConnectionState.done) {
            return Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text('appVersion: ${snapShot.data!.appVersion}'),
                Text('browserName: ${snapShot.data!.browserName}'),
                Text('language: ${snapShot.data!.language}'),
              ],
            );
          } else {
            return const CircularProgressIndicator();
          }
        },
      );
    // Androidのとき
    } else if(Platform.isAndroid) {
      return FutureBuilder<AndroidDeviceInfo>(
        future: Future<AndroidDeviceInfo>(() async {
          // データ取得
          return (await deviceInfo.androidInfo);
        }),
        builder: (context, snapShot) {
          if (snapShot.connectionState == ConnectionState.done) {
            return Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text('model: ${snapShot.data!.model}'),
                Text('sdkInt: ${snapShot.data!.version.sdkInt}'),
              ],
            );
          } else {
            return const CircularProgressIndicator();
          }
        },
      );
    } else {
      return const SizedBox();
    }
  }
}
Flutterラボ
hatchoutschool

85min
プレミアム会員
見放題
GoogleMapを用いて地図アプリを作成する
2022.04.16
¥6,600
Flutter Daily
Flutterに関する記事を日々更新しています (223本) 

【Dart】Stringからint, double, DateTimeに変換する
2020.09.14

【Dart】【Flutter】List型(リスト)の使い方とよく使うメソッドまとめ
2020.09.18

【Dart】【Flutter】DateTime型についてのまとめ
2020.10.01

【Dart】Map型の使い方とよく使うメソッドまとめ
2020.09.13
