Flutter 如何獲取設備的惟一碼

老鐵記得 轉發 ,貓哥會呈現更多 Flutter 好文~~~~

微信 flutter 研修羣 ducafecat

原文

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';
  • 第三步: 在應用程序的根目錄中運行 flutter 軟件包。

代碼實現

如何實現 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://ducafecat.tech/

https://github.com/ducafecat

往期

開源

GetX Quick Start

https://github.com/ducafecat/...

新聞客戶端

https://github.com/ducafecat/...

strapi 手冊譯文

https://getstrapi.cn

微信討論羣 ducafecat

系列集合

譯文

https://ducafecat.tech/catego...

Dart 編程語言基礎

https://space.bilibili.com/40...

Flutter 零基礎入門

https://space.bilibili.com/40...

Flutter 實戰從零開始 新聞客戶端

https://space.bilibili.com/40...

Flutter 組件開發

https://space.bilibili.com/40...

Flutter Bloc

https://space.bilibili.com/40...

Flutter Getx4

https://space.bilibili.com/40...

Docker Yapi

https://space.bilibili.com/40...

相關文章
相關標籤/搜索