flutter神器,把桌面图标当组件用

2,034 阅读1分钟

介绍

塔庙的每次在关于或登录页面需要用到logo都需要复制一个资源图到flutter的assets里面,下次改logo了又可能遗漏,干脆直接复用桌面的logo,但是找了一大圈都没人这样搞,好吧,自己动手,你们足食。

flutter_get_native_icon 插件出来了。

用法

  1. 导入插件到项目 打开项目的 pubspec.yaml
dependencies:
  flutter_get_native_icon: ^0.0.3

^0.0.3的话你们可以去 pub-web.flutter-io.cn/packages/fl… 看看最新版本是什么就写什么。

  1. 到dart文件导入包
import 'package:flutter_get_native_icon/flutter_get_native_icon.dart';
  1. 使用 然后就简单了,直接用
@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text('App Icon Display'),
    ),
    body: Center(child: NativeAppIconWidget()),
  );
}

注意

别用 icons_launcher 去生成icon,生成之后是无法显示出组件的,具体看github.com/mrrhak/icon… 等作者修复。

推荐使用flutter_launcher_icons

属性

我就不翻译了,dddd【懂的都懂】

  • width: The width of the icon.
  • height: The height of the icon.
  • fit: How the icon should be inscribed into the space allocated during layout.
  • colorBlendMode: The blend mode applied to the icon.
  • color: The color to use when drawing the icon.
  • opacity: The opacity to apply to the icon.
  • alignment: How to align the icon within its bounds.

获取桌面的app名字

因为package_info_plus插件有了就不额外处理了。

  Future<void> _loadAppInfo() async {
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    setState(() {
      appName = packageInfo.appName;
    });
  }

完整demo

import 'package:flutter/material.dart';
import 'package:flutter_get_native_icon/flutter_get_native_icon.dart';

class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text('App Icon Display'),
    ),
    body: Center(child: NativeAppIconWidget()),
  );
}
}

void main() {
runApp(MaterialApp(
  home: MyHomePage(),
));
}

开源地址

github.com/fluttercand…

里面有demo,可以直接运行,环境flutter 3.24.3

效果图

image.png

最后一句

flutter candies牛逼