当前位置:首页 > 移动端开发 > 正文内容

Flutter调试debug或许打包release帧率只要60的原因

邻居的猫1个月前 (12-09)移动端开发1208

问题描绘

最近发现Flutter中引进像素较大的静态图片或许字体导致调试或许打包之后在高刷手机上帧率只要60的问题。

  • 测验设备为小米13,可在开发者选项中直接翻开帧率显现,

  • 也可运用statsfl插件显现帧率

    StatsFl(
        maxFps: 120, // Support custom FPS target (default is 60)
        align: Alignment.bottomCenter, //Alignment of statsbox
        child: MyApp(),
    ),
    

解决方案

大图片问题

能够恰当缩小图片分辨率以及紧缩图片。

1、PS中先将图片转换为智能目标,然后调整图画巨细(按像素),之后保存图片。这样做能够最大极限保存清晰度。

  • Photopea | Online Photo Editor
  • 【在线PS】PS软件网页版_ps在线图片处理东西photopea-江下科技在线使用 (onlinedo.cn)
  • 【在线PS】PS软件网页版,ps在线图片处理东西photopea-稿定规划PS (gaoding.com)

2、图片紧缩网站引荐

  • https://www.bejson.com/ui/compress_img/
  • Caesium Image Compressor - Online

字体问题

不能通过静态字体办法,能够将网络字体下载到本地,然后动态加载。

1、字体初始化东西类

import 'dart:io';
import 'package:flutter/services.dart';
import 'package:muen_edu_app/network/dio/dio_instance.dart';
import 'package:muen_edu_app/utils/file_utils.dart';

class FontUtils {
  static FontUtils? _instan;
  final Map<String, String> fontFamilies = {
    "JiangCheng": "https://xxx.ttf",
    "SegoeUI": "https://xxx.ttf",
  };
  final String fontFloder = "fonts";

  FontUtils._();

  static FontUtils get instan => _instan ??= FontUtils._();

  Future initiaFont() async {
    String jiangCheng =
        await FileUtils.ins.getLocalDocumentFile(fontFloder, "JiangCheng.ttf");
    String segoeUI =
        await FileUtils.ins.getLocalDocumentFile(fontFloder, "SegoeUI.ttf");
    await loadFont(File(jiangCheng), "JiangCheng");
    await loadFont(File(segoeUI), "SegoeUI");
  }

  /// 加载字体
  Future loadFont(File fontFile, String fontFamily) async {
    if (!fontFile.existsSync()) {
      // 没有字体,去下载
      await downloadFont(fontFamilies[fontFamily]!, fontFamily);
    }
    Future<ByteData> readFont() async {
      ByteData byteData = (await fontFile.readAsBytes()).buffer.asByteData();
      return byteData;
    }

    FontLoader loader = FontLoader(fontFamily);
    loader.addFont(readFont());
    await loader.load();
  }

  Future<String> downloadFont(String url, String fontFamily) async {
    String savePath =
        await FileUtils.ins.getLocalDocumentFile(fontFloder, '$fontFamily.ttf');
    await DioInstance.instan.download(url, savePath);
    return savePath;
  }
}

2、文件东西类

import 'dart:io';
import 'package:muen_edu_app/network/dio/dio_instance.dart';
import 'package:path_provider/path_provider.dart';

class FileUtils {
  static FileUtils? _ins;

  FileUtils._();
  static FileUtils get ins {
    return _ins ??= FileUtils._();
  }

  /// 获取文档目录文件
  Future<String> getLocalDocumentFile(String folder, String filename) async {
    final dir = await getApplicationDocumentsDirectory();
    return '${dir.path}/$folder/$filename';
  }

  /// 获取暂时目录文件
  Future<String> getLocalTemporaryFile(String folder, String filename) async {
    final dir = await getTemporaryDirectory();
    return '${dir.path}/$folder/$filename';
  }

  /// 获取使用程序目录文件
  Future<String> getLocalSupportFile(String folder, String filename) async {
    final dir = await getApplicationSupportDirectory();
    return '${dir.path}/$folder/$filename';
  }
}

3、dio下载

Future<Response> download(
  String url,
  String savePath, {
  CancelToken? cancelToken,
  Options? options,
  void Function(int, int)? onReceiveProgress,
}) async {
  return await _dio.download(
    url,
    savePath,
    onReceiveProgress: onReceiveProgress,
    options: options ??
        Options(
          method: HttpMethods.get,
          responseType: ResponseType.bytes,
          receiveTimeout: _defaultTime,
          sendTimeout: _defaultTime,
        ),
  );
}

4、调用初始化办法

FontUtils.instan.initiaFont();

5、设置大局默许字体

ThemeData(fontFamily: 'JiangCheng');

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=489

分享给朋友:

“Flutter调试debug或许打包release帧率只要60的原因” 的相关文章

鸿蒙量天尺,洪荒神话中的后天功德至宝

鸿蒙量天尺是洪荒小说中的一种重要法宝,具有以下特点:1. 先天功德灵宝:鸿蒙量天尺是由开天的一成玄黄功德和鸿蒙玄黄之气凝聚而成,属于先天功德灵宝之一。2. 强大的攻击力:鸿蒙量天尺的攻击力非常强大,仅次于盘古幡,是洪荒时期最强大的攻击法宝之一。3. 变化多端:这件法宝可以变化形态,既能用来攻击,也能...

应是鸿蒙借君手

“应是鸿蒙借君手”这句诗出自清代诗人黄景仁的《太白墓》。原句为“醒时兀兀醉千首,应是鸿蒙借君手。”这句诗的意思是李白的这些好诗并不是李白本人单独写出来的,而是“鸿蒙”借他的手写下的。在这里,“鸿蒙”可以理解为时代或自然的元气。这句诗在不同的语境下被引用,赋予了不同的含义。例如,费孝通先生在2000年...

小米手机稳定版怎么刷成开发版,轻松体验最新功能与优化

小米手机稳定版怎么刷成开发版,轻松体验最新功能与优化

将小米手机从稳定版刷成开发版需要一定的操作步骤和注意事项。以下是一个基本的指南,但请注意,刷机有风险,操作不当可能会导致手机变砖。建议在进行任何操作之前,确保备份好重要数据,并遵循官方指南。1. 解锁Bootloader: 访问小米官网解锁页面,按照官方指引申请解锁权限。 下载并安装小米...

ios开发工程师是干嘛的,构建苹果生态的幕后英雄

ios开发工程师是干嘛的,构建苹果生态的幕后英雄

iOS开发工程师主要负责开发和维护苹果iOS平台上的应用程序。他们需要熟悉苹果公司的iOS操作系统、开发工具和相关技术,以便能够设计和实现高效、稳定、用户友好的应用程序。iOS开发工程师的主要职责包括:1. 设计和实现应用程序的功能和用户界面,确保应用程序的易用性和美观性。2. 与产品经理、设计师和...

鸿蒙系统pc版,鸿蒙电脑操作系统下载官网

1. 发布时间: 鸿蒙系统PC版预计将在今年第四季度正式推送。 另有消息称,鸿蒙PC版将于明年上半年发布。2. 功能特点: 鸿蒙系统PC版支持多屏协同、智能互联、跨设备操作等功能。 界面设计简约,适配应用广泛,并提供专属的PC麒麟处理器,性能强劲。 支持多设备家族化、跨...

鸿蒙空间,华为打造的全场景智慧生态平台

鸿蒙空间,华为打造的全场景智慧生态平台

鸿蒙空间(HarmonyOS)是华为开发的一款全场n2. 设计理念:鸿蒙系统的设计理念是“面向未来、面向全场n 功能特点1. 分布式架构:鸿蒙系统采用分布式架构,将各个终端设备视为一个整体,实现了设备之间的无缝连接和协同工作。这种架构增强了系统的灵活性和可扩展性,能够轻松适应各种不同类型的应用场...