https://medium.com/flutterdev...
獲取設備 id 是每個 APP 都應該去作的,好比你訪問惟一用戶統計就須要。android
https://github.com/flutter-de...ios
通常來講,製做一個移動應用程序是一個極其使人難以置信和測試的任務。有許多可用的框架,這些框架爲建立移動應用程序提供了極好的亮點。爲了建立移動應用,Android 提供了一個基於 Java 和 Kotlin 語言的本地結構框架,而 iOS 提供了一個依賴於 Objective-C/Swift 語言的系統。git
隨後,咱們須要兩種獨特的語言和結構來爲這兩種操做系統建立應用程序。今天,爲了打破這種錯綜複雜的結構,已經提出了幾個框架來幫助桌面應用程序同時使用這兩種操做系統。這類框架被稱爲 cross-platform
跨平臺開發工具。github
在這個博客,咱們將探索如何得到獨特的設備細節.咱們將實現一個演示程序,並得到獨特的設備細節,爲安卓和 IOS 使用設備信息包在您的 Flutter 應用程序。編程
Flutter 中獲得當前設備數據的應用。如何利用 device_info plugin 爲 Android 和 IOS 提供獨特的設備細節。在這一點上,當咱們談論一個獨特的設備細節在本地,咱們有 Settings.Secure.ANDROID_ID
得到一個獨一無二的設備細節。api
https://pub.dev/packages/devi...微信
這個演示視頻顯示瞭如何得到一個獨特的設備細節的 Flutter 。它顯示瞭如何設備細節將工做使用設備信息包在您的 Flutter 應用程序。它會顯示用戶什麼時候點擊觸發按鈕,屏幕上顯示的惟一設備 Andriod/Ios 信息,如設備名稱、版本、標識符等。它會顯示在你的設備上。app
將依賴項添加到 pubspec ー yaml 文件。框架
dependencies: flutter: sdk: flutter device_info: ^0.4.0+4
import 'package:device_info/device_info.dart';
如何實現 dart 文件中的代碼:async
在 lib 文件夾中建立一個新的 dart 文件,名爲 device_detail_demo.dart
。
首先,咱們將建立一個用戶界面。在主體部分,咱們將添加一箇中心小部件。在內部,咱們將添加一個列小部件。在這個小部件中,咱們將添加一個 mainAxisAlignmnet 爲中心。它是 children's property ,添加 RaisedButton()。在這個按鈕中,咱們將添加填充、顏色和 OnPressed 功能。它的子屬性,咱們將文本「Device Details」。
Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ RaisedButton( padding: EdgeInsets.all(14), color: Colors.cyan[50], onPressed: (){}, child: Text("Device Details", style: TextStyle(color: Colors.black),), ), ], ), ),
當咱們運行應用程序時,咱們應該獲得屏幕的輸出,就像下面的屏幕截圖同樣。
咱們將建立三個字符串 deviceName、 deviceVersion 和 identifier。
String deviceName =''; String deviceVersion =''; String identifier= '';
如今,咱們將添加程序的主函數。咱們將添加 future _deviceDetails()
在內部,咱們將添加一個最終的 deviceinfoplgin 等於新的 deviceinfoplgin()。咱們將添加 try {} 方法,併爲平臺導入 dart:io。
import 'dart:io';
若是平臺是 Andriod,那麼構建就等於 deviceInfoPlugin 對於 Andriod 信息。添加 setState ()方法。在這個方法中,咱們將全部的字符串加起來等於構建。若是平臺是 Ios,那麼構建版本就等於 Ios 信息的 deviceInfoPlugin。添加 setState ()方法。在這個方法中,咱們將全部的字符串加起來等於構建。
Future<void>_deviceDetails() async{ final DeviceInfoPlugin deviceInfoPlugin = new DeviceInfoPlugin(); try { if (Platform.isAndroid) { var build = await deviceInfoPlugin.androidInfo; setState(() { deviceName = build.model; deviceVersion = build.version.toString(); identifier = build.androidId; }); //UUID for Android } else if (Platform.isIOS) { var data = await deviceInfoPlugin.iosInfo; setState(() { deviceName = data.name; deviceVersion = data.systemVersion; identifier = data.identifierForVendor; });//UUID for iOS } } on PlatformException { print('Failed to get platform version'); } }
咱們將爲 PlatformException 導入服務
import 'package:flutter/services.dart';
如今,咱們將在引起的按鈕上添加按下的函子上的 _deviceDetails()
onPressed: (){ _deviceDetails(); },
咱們將添加設備版本、名稱和標識符不是空的,而後顯示 Column 小部件。在這個小部件中,咱們將添加全部三個文本,如設備名稱、設備版本和設備標識符將顯示在您的設備上。不然,顯示一個空容器。
deviceVersion.isNotEmpty && deviceName.isNotEmpty && identifier.isNotEmpty? Column( children: [ SizedBox(height: 30,), Text("Device Name:- "+deviceName,style: TextStyle (color: Colors.red, fontWeight: FontWeight.bold)), SizedBox(height: 30,), Text("Device Version:- "+deviceVersion,style: TextStyle (color: Colors.red, fontWeight: FontWeight.bold)), SizedBox(height: 30,), Text("Device Identifier:- "+identifier,style: TextStyle (color: Colors.red, fontWeight: FontWeight.bold)), SizedBox(height: 30,), ], ): Container(),
當用戶點擊按鈕,而後,全部三個數據將顯示在您的設備上。當咱們運行應用程序時,咱們應該獲得屏幕的輸出,就像下面的屏幕截圖同樣。
import 'dart:io'; import 'package:device_info/device_info.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; class DeviceDetailDemo extends StatefulWidget { @override _DeviceDetailDemoState createState() => _DeviceDetailDemoState(); } class _DeviceDetailDemoState extends State<DeviceDetailDemo> { String deviceName =''; String deviceVersion =''; String identifier= ''; Future<void>_deviceDetails() async{ final DeviceInfoPlugin deviceInfoPlugin = new DeviceInfoPlugin(); try { if (Platform.isAndroid) { var build = await deviceInfoPlugin.androidInfo; setState(() { deviceName = build.model; deviceVersion = build.version.toString(); identifier = build.androidId; }); //UUID for Android } else if (Platform.isIOS) { var data = await deviceInfoPlugin.iosInfo; setState(() { deviceName = data.name; deviceVersion = data.systemVersion; identifier = data.identifierForVendor; });//UUID for iOS } } on PlatformException { print('Failed to get platform version'); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Colors.redAccent[100], title: Text("Flutter Device Details Demo"), automaticallyImplyLeading: false, ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ RaisedButton( padding: EdgeInsets.all(14), color: Colors.cyan[50], onPressed: (){ _deviceDetails(); }, child: Text("Device Details", style: TextStyle(color: Colors.black),), ), deviceVersion.isNotEmpty && deviceName.isNotEmpty && identifier.isNotEmpty? Column( children: [ SizedBox(height: 30,), Text("Device Name:- "+deviceName,style: TextStyle (color: Colors.red, fontWeight: FontWeight.bold)), SizedBox(height: 30,), Text("Device Version:- "+deviceVersion,style: TextStyle (color: Colors.red, fontWeight: FontWeight.bold)), SizedBox(height: 30,), Text("Device Identifier:- "+identifier,style: TextStyle (color: Colors.red, fontWeight: FontWeight.bold)), SizedBox(height: 30,), ], ): Container(), ], ), ), ); } }
在本文中,我解釋瞭如何得到獨特的設備細節 Flutter 的基本結構,您能夠根據本身的選擇修改這個代碼。這是一個小的介紹,以得到獨特的設備細節的用戶交互從我這邊,它的工做使用 Flutter。
© 貓哥
https://github.com/ducafecat/...
https://github.com/ducafecat/...
https://ducafecat.tech/catego...
https://space.bilibili.com/40...
https://space.bilibili.com/40...
https://space.bilibili.com/40...
https://space.bilibili.com/40...
https://space.bilibili.com/40...
https://space.bilibili.com/40...