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...

相关文章
相关标签/搜索