大致思路说明
利用package_info 获取App包信息
然后在关于页动态展示app名称 , 版本号 等信息
- app启动的时候(或者在使用前调用也可以)调用
PackageInfoUtil.init() 初始化packageInfo 信息 - 在需要展示包信息的地方调用
PackageInfoUtil 提取信息
包信息获取工具源码
import 'package:package_info/package_info.dart';
/// 包信息工具
/// 1. app名
/// 2. 版本号
/// 3. 构建号
/// 4. 包名
class PackageInfoUtil {
static PackageInfo? packageInfo;
//初始化
static init() async{
packageInfo = await PackageInfo.fromPlatform();
}
//获取APP版本号
static dynamic getVersionString(){
return packageInfo?.version.toString();
}
//获取APP构建号
static dynamic getBuildString(){
return packageInfo?.buildNumber.toString();
}
//获取APP包名称
static dynamic getPackageNameString(){
return packageInfo?.packageName.toString();
}
//获取APP名称
static dynamic getAppNameString(){
return packageInfo?.appName.toString();
}
}
关于页源码
源码中有大量自己定义的主键构建代码(不能直接使用), 这里主要参考版本号 和app名称 的取值
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class About extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
body: G.layout.bg(
child: Column(
children: <Widget>[
Header(title: '关于'),
ColorFilter(
width: G.layout.L(335),
margin: EdgeInsets.only(top: G.layout.L(20)),
padding:
EdgeInsets.only(top: G.layout.L(32), bottom: G.layout.L(32)),
borderRadius: BorderRadius.all(Radius.circular(G.layout.L(18))),
child: Column(
children: <Widget>[
ClipRRect(
borderRadius:
BorderRadius.all(Radius.circular(G.layout.L(21))),
child: G.image
.container(src: G.image.LOGO, height: 64, width: 64),
),
G.layout.fontWhite('${PackageInfoUtil.getAppNameString()}', 14, {
'margin': EdgeInsets.only(top: G.layout.L(16)),
}),
G.layout.fontGrey('版本 v${PackageInfoUtil.getVersionString()}', 12, {
'margin': EdgeInsets.only(top: G.layout.L(4)),
}),
Padding(
padding: EdgeInsets.only(top: G.layout.L(30)),
),
ZhhxPrivacy.showEntry(),
G.layout.fontGrey('Copyright ?2020-2021 ${PackageInfoUtil.getAppNameString()}', 12,
{'margin': EdgeInsets.only(top: G.layout.L(4))}),
G.layout.fontGrey('All Rights Reserved.', 12)
],
),
)
],
),
),
);
}
}
|