首頁 > 軟體

詳解如何在Flutter中獲取裝置識別符號

2022-04-11 10:00:18

本文將引導您完成 2 個範例,演示如何在 Flutter 中獲取裝置識別符號

使用 platform_device_id

如果您只需要執行應用程式的裝置的 id,最簡單快捷的解決方案是使用platform_device_id包。它適用於 Android (AndroidId)、iOS (IdentifierForVendor)、Windows (BIOS UUID)、macOS (IOPlatformUUID) 和 Linux (BIOS UUID)。在 Flutter Web 應用程式中,您將獲得 UserAgent(此資訊不是唯一的)。

應用預覽

我們要構建的範例應用程式包含一個浮動按鈕。按下此按鈕時,裝置的 ID 將顯示在螢幕上。以下是它在 iOS 和 Android 上的工作方式:

程式碼

1.通過執行安裝外掛:

flutter pub add platform_device_id

然後執行這個命令:

flutter pub get

不需要特殊許可權或設定。

2.完整程式碼:

// main.dart
import 'package:flutter/material.dart';
import 'package:platform_device_id/platform_device_id.dart';
​
void main() {
  runApp(const MyApp());
}
​
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        // Remove the debug banner
        debugShowCheckedModeBanner: false,
        title: '大前端之旅',
        theme: ThemeData(
          primarySwatch: Colors.indigo,
        ),
        home: const HomePage());
  }
}
​
class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);
​
  @override
  _HomePageState createState() => _HomePageState();
}
​
class _HomePageState extends State<HomePage> {
  String? _id;
​
  // This function will be called when the floating button is pressed
  void _getInfo() async {
    // Get device id
    String? result = await PlatformDeviceId.getDeviceId;
​
    // Update the UI
    setState(() {
      _id = result;
    });
  }
​
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('大前端之旅')),
      body: Padding(
        padding: const EdgeInsets.all(20),
        child: Center(
            child: Text(
          _id ?? 'Press the button',
          style: TextStyle(fontSize: 20, color: Colors.red.shade900),
        )),
      ),
      floatingActionButton: FloatingActionButton(
          onPressed: _getInfo, child: const Icon(Icons.play_arrow)),
    );
  }
}

使用 device_info_plus

device_info_plus為您提供作為 platform_device_id 的裝置 ID,並提供有關裝置的其他詳細資訊(品牌、型號等)以及 Flutter 應用執行的 Android 或 iOS 版本。

應用預覽

我們將製作的應用程式與上一個範例中的應用程式非常相似。但是,這一次我們將在螢幕上顯示大量文字。返回的結果因平臺而異。如您所見,Android 上返回的資訊量遠遠超過 iOS。

程式碼

1. 通過執行以下操作安裝外掛:

flutter pub add device_info_plus

然後執行:

flutter pub get

2. main.dart中的完整原始碼:

// main.dart
import 'package:flutter/material.dart';
import 'package:device_info_plus/device_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(
        // Remove the debug banner
        debugShowCheckedModeBanner: false,
        title: '大前端之旅',
        theme: ThemeData(
          primarySwatch: Colors.amber,
        ),
        home: const HomePage());
  }
}
​
class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);
​
  @override
  _HomePageState createState() => _HomePageState();
}
​
class _HomePageState extends State<HomePage> {
  Map? _info;
​
  // This function is triggered when the floating button gets pressed
  void _getInfo() async {
    // Instantiating the plugin
    final deviceInfoPlugin = DeviceInfoPlugin();
​
    final result = await deviceInfoPlugin.deviceInfo;
    setState(() {
      _info = result.toMap();
    });
  }
​
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('大前端之旅')),
      body: _info != null
          ? Padding(
              padding: const EdgeInsets.all(20),
              child: ListView(
                children: _info!.entries
                    .map((e) => Wrap(
                          children: [
                            Text(
                              "${e.key} :",
                              style: const TextStyle(
                                  fontSize: 18, color: Colors.red),
                            ),
                            const SizedBox(
                              width: 15,
                            ),
                            Text(
                              e.value.toString(),
                              style: const TextStyle(
                                fontSize: 18,
                              ),
                            )
                          ],
                        ))
                    .toList(),
              ),
            )
          : const Center(
              child: Text('Press the button'),
            ),
      floatingActionButton: FloatingActionButton(
        onPressed: _getInfo,
        child: const Icon(Icons.info),
      ),
    );
  }
}

結論

我們已經介紹了幾種讀取裝置資訊的技術。選擇一個適合您在專案中實施的需求。

以上就是詳解如何在Flutter中獲取裝置識別符號的詳細內容,更多關於Flutter獲取裝置識別符號的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com