共计 5659 个字符,预计需要花费 15 分钟才能阅读完成。
老铁记得 转发,猫哥会出现更多 Flutter 好文~~~~
微信 flutter 研修群 ducafecat
原文
https://medium.com/flutterdev…
猫哥说
获取设施 id 是每一个 APP 都应该去做的,比方你拜访惟一用户统计就须要。
前言
代码
https://github.com/flutter-de…
参考
- https://pub.dev/packages/devi…
注释
一般来说,制作一个挪动应用程序是一个极其令人难以置信和测试的工作。有许多可用的框架,这些框架为创立挪动应用程序提供了极好的亮点。为了创立挪动利用,Android 提供了一个基于 Java 和 Kotlin 语言的本地构造框架,而 iOS 提供了一个依赖于 Objective-C/Swift 语言的零碎。
随后,咱们须要两种独特的语言和构造来为这两种操作系统创立应用程序。明天,为了突破这种盘根错节的构造,曾经提出了几个框架来帮忙桌面应用程序同时应用这两种操作系统。这类框架被称为 cross-platform
跨平台开发工具。
在这个博客,咱们将摸索如何取得独特的设施细节. 咱们将实现一个演示程序,并取得独特的设施细节,为安卓和 IOS 应用设施信息包在您的 Flutter 应用程序。
简介
Flutter 中失去以后设施数据的利用。如何利用 device_info plugin 为 Android 和 IOS 提供独特的设施细节。在这一点上,当咱们议论一个独特的设施细节在本地,咱们有 Settings.Secure.ANDROID_ID
取得一个举世无双的设施细节。
https://pub.dev/packages/devi…
演示
这个演示视频显示了如何取得一个独特的设施细节的 Flutter。它显示了如何设施细节将工作应用设施信息包在您的 Flutter 应用程序。它会显示用户何时点击触发按钮,屏幕上显示的惟一设施 Andriod/Ios 信息,如设施名称、版本、标识符等。它会显示在你的设施上。
施行
- 第一步: 增加依赖项
将依赖项增加到 pubspec ー yaml 文件。
dependencies: | |
flutter: | |
sdk: flutter | |
device_info: ^0.4.0+4 |
- 第二步: 导入
import 'package:device_info/device_info.dart';
- 第三步: 在应用程序的根目录中运行 flutter 软件包。
代码实现
如何实现 dart 文件中的代码:
在 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…