You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何调用AppUtils的package_info方法在仪表盘抽屉展示应用版本

实现步骤

步骤1:导入工具类文件

在dashboard.dart顶部引入你封装好的工具类,路径根据你项目的实际目录结构调整即可:

import 'package:你的项目名/对应路径/app_util.dart';

步骤2:选择异步加载版本号的方案

你封装的getAppDetails是异步方法,有两种常用的调用方案,按需选择即可:

方案一:页面初始化时预加载版本号(推荐)

进入仪表盘页面时就提前加载版本号存到状态变量中,抽屉打开后可以直接展示,不会出现数据加载闪烁。

class _DashboardState extends State<Dashboard> {
  // 存储应用版本号的状态变量
  String _appVersion = '';

  @override
  void initState() {
    super.initState();
    // 页面初始化时触发版本号加载
    _loadAppVersion();
  }

  Future<void> _loadAppVersion() async {
    final version = await AppUtils.getAppDetails();
    // 加mounted判断,避免页面销毁后调用setState报错
    if (mounted) {
      setState(() {
        _appVersion = version;
      });
    }
  }

  // 其余原有页面代码...
}

在抽屉的列表项中直接调用变量即可:

Drawer(
  child: ListView(
    children: [
      // 你原有抽屉的其他列表项...
      ListTile(
        leading: Icon(Icons.info_outline),
        title: Text("应用版本"),
        trailing: Text(_appVersion.isEmpty ? "加载中..." : "v$_appVersion"),
      )
    ],
  ),
)

方案二:在抽屉位置直接用FutureBuilder加载

如果不想提前预存变量,可以直接在抽屉的对应位置用FutureBuilder处理异步逻辑:

Drawer(
  child: ListView(
    children: [
      // 你原有抽屉的其他列表项...
      FutureBuilder(
        future: AppUtils.getAppDetails(),
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.done && snapshot.hasData) {
            return ListTile(
              leading: Icon(Icons.info_outline),
              title: Text("应用版本"),
              trailing: Text("v${snapshot.data}"),
            );
          }
          return ListTile(
            leading: Icon(Icons.info_outline),
            title: Text("应用版本"),
            trailing: Text("加载中..."),
          );
        },
      )
    ],
  ),
)

可选优化:明确工具类返回类型

建议你把现有的getAppDetails方法明确指定返回类型为Future<String>,避免后续开发出现类型校验错误,修改后代码如下:

class AppUtils {
  static Future<String> getAppDetails() async {
    final packageInfo = await PackageInfo.fromPlatform();
    String version = packageInfo.version;
    return version;
  }
}

内容的提问来源于stack exchange,提问作者Dhaval Chaudhari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:06:03