Flutter信息获取插件info_kit的使用
Flutter信息获取插件info_kit的使用
安装
flutter pub add info_kit
示例
初始化
InfoKit.init({
flavorEnabled: true,
List<InfoFlavor> flavors = DefaultInfoFlavor.flavors,
InfoFlavor fallbackFlavor = DefaultInfoFlavor.fallbackFlavor,
InfoSize fallbackSize = DefaultInfoSize.fallbackSize,
bool envEnabled = true,
bool envFlavorEnabled = true,
bool envFlavorPerPlatformEnabled = true,
String envFolder = 'env', // 设置为空字符串以使用根文件夹
});
可用的getter
// 设备大小,基于一组预定义的大小
InfoSize size = InfoKit.size;
// Web平台的原始URL,否则返回空字符串
String origin = InfoKit.origin;
// 设备语言
Locale locale = InfoKit.locale;
// 设备平台(iOS应用、Web应用、macOS应用等)
InfoPlatform platform = InfoKit.platform;
// 设备的操作系统
InfoOS os = InfoKit.os;
// 应用构建风味
InfoFlavor flavor = InfoKit.flavor;
// 是否为发布版或调试版
InfoMode mode = InfoKit.mode;
int buildNumber = InfoKit.buildNumber;
String version = InfoKit.version;
String packageName = InfoKit.packageName;
String appName = InfoKit.appName;
使用
风味(Flavor)
该插件提供了对当前应用风味的访问。
- 使用
flavors
参数设置支持的风味列表。可以使用默认的风味列表,也可以添加更多或创建自己的风味列表。 - 使用构建参数定义当前风味:
flutter run --dart-define=flavor=<flavor>
(此包忽略了--flavor
标志,因为该标志在Web构建中不可用)。 - 在应用的任何地方,都可以通过
flavor
getter访问当前风味。
大小(Size)
- 在项目的根部包裹一个
LayoutBuilder
并使用constraints
属性获取尺寸:LayoutBuilder( builder: (context, constraints) { InfoKit.setConstrains(constraints); return Text('${constraints.maxWidth} x ${constraints.maxHeight}'); }, );
size
getter返回的尺寸来自一组预定义的尺寸。- 可以使用默认的尺寸列表,也可以添加更多或创建自己的尺寸列表。
环境变量(Env)
设置不同风味的不同环境变量。
- 文件结构应如下所示:
- env - .env - .env.flavor1 - .env.flavor2 - .env.flavor3 - ios - .env.flavor1 - .env.flavor2 - .env.flavor3 - android - .env.flavor1 - .env.flavor2 - .env.flavor3 - web - .env.flavor1 - .env.flavor2 - .env.flavor3
- 环境变量的合并方式是更具体的环境变量覆盖较不具体的环境变量。别忘了将文件夹作为资源添加到
pubspec.yaml
文件中。 - 现在可以通过
flutter_dotenv
包访问这些变量。
截图
示例代码
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:info_kit/info_kit.dart';
void main() async {
await InfoKit.init();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, constraints) {
InfoKit.setConstrains(constraints);
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Padding(
padding: const EdgeInsets.all(8),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('设备信息', style: Theme.of(context).textTheme.titleLarge),
Text('屏幕大小: ${InfoKit.size.toString()}'),
Text('语言: ${InfoKit.locale.toLanguageTag()}'),
Text('平台: ${InfoKit.platform.name}'),
Text('操作系统: ${InfoKit.os.name}'),
Text('应用信息', style: Theme.of(context).textTheme.titleLarge),
Text('来源: ${InfoKit.origin}'),
Text('风味: ${InfoKit.flavor.name}'),
Text('模式: ${InfoKit.mode.name}'),
Text('构建信息', style: Theme.of(context).textTheme.titleLarge),
Text('构建号: ${InfoKit.buildNumber}'),
Text('版本: ${InfoKit.version}'),
Text('包名: ${InfoKit.packageName}'),
Text('应用名: ${InfoKit.appName}'),
Text('环境变量', style: Theme.of(context).textTheme.titleLarge),
Text('环境颜色: ${dotenv.get('COLOR')}'),
Text('环境水果: ${dotenv.get('FRUIT')}'),
Text('环境饮料: ${dotenv.get('DRINK')}'),
],
),
),
);
},
);
}
}
更多关于Flutter信息获取插件info_kit的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter信息获取插件info_kit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
info_kit
是一个用于 Flutter 的应用信息获取插件,它可以帮助开发者获取与设备、应用程序相关的各种信息,例如设备型号、操作系统版本、应用程序版本号等。通过使用 info_kit
,开发者可以轻松地获取这些信息并在应用程序中使用。
以下是如何在 Flutter 项目中使用 info_kit
插件的步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 info_kit
依赖:
dependencies:
flutter:
sdk: flutter
info_kit: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
以安装依赖。
2. 导入包
在需要使用 info_kit
的 Dart 文件中导入包:
import 'package:info_kit/info_kit.dart';
3. 使用 info_kit
获取信息
info_kit
提供了多种方法来获取设备和应用相关的信息。以下是一些常见的用法:
获取设备信息
String deviceModel = await InfoKit.deviceModel;
String deviceName = await InfoKit.deviceName;
String deviceId = await InfoKit.deviceId;
String deviceType = await InfoKit.deviceType;
获取操作系统信息
String osName = await InfoKit.osName;
String osVersion = await InfoKit.osVersion;
获取应用信息
String appName = await InfoKit.appName;
String appVersion = await InfoKit.appVersion;
String buildNumber = await InfoKit.buildNumber;
String packageName = await InfoKit.packageName;
4. 示例代码
以下是一个完整的示例,展示如何在 Flutter 应用中使用 info_kit
获取并显示设备和应用信息:
import 'package:flutter/material.dart';
import 'package:info_kit/info_kit.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'InfoKit Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: InfoKitDemo(),
);
}
}
class InfoKitDemo extends StatefulWidget {
[@override](/user/override)
_InfoKitDemoState createState() => _InfoKitDemoState();
}
class _InfoKitDemoState extends State<InfoKitDemo> {
String deviceModel = 'Unknown';
String deviceName = 'Unknown';
String deviceId = 'Unknown';
String deviceType = 'Unknown';
String osName = 'Unknown';
String osVersion = 'Unknown';
String appName = 'Unknown';
String appVersion = 'Unknown';
String buildNumber = 'Unknown';
String packageName = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
_loadDeviceInfo();
}
Future<void> _loadDeviceInfo() async {
deviceModel = await InfoKit.deviceModel;
deviceName = await InfoKit.deviceName;
deviceId = await InfoKit.deviceId;
deviceType = await InfoKit.deviceType;
osName = await InfoKit.osName;
osVersion = await InfoKit.osVersion;
appName = await InfoKit.appName;
appVersion = await InfoKit.appVersion;
buildNumber = await InfoKit.buildNumber;
packageName = await InfoKit.packageName;
setState(() {});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('InfoKit Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Device Model: $deviceModel'),
Text('Device Name: $deviceName'),
Text('Device ID: $deviceId'),
Text('Device Type: $deviceType'),
Text('OS Name: $osName'),
Text('OS Version: $osVersion'),
Text('App Name: $appName'),
Text('App Version: $appVersion'),
Text('Build Number: $buildNumber'),
Text('Package Name: $packageName'),
],
),
),
);
}
}