Flutter 填坑录 (不定时更新)

这篇具有很好参考价值的文章主要介绍了Flutter 填坑录 (不定时更新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,内存爆表 > 图片缓存

/// State基类
class BaseState<T extends StatefulWidget> extends State<T>
    with
        AutomaticKeepAliveClientMixin,
        WidgetHelper,
        DialogHelper,
        EventListener {
  @mustCallSuper
  void initState() {
    if (isListenEvent()) {
      EventManager.instance.listen(this);
    }

    //指定图片缓存大小,默认是1000
    PaintingBinding.instance.imageCache.maximumSize = 10;

    super.initState();
    LogEvent.onPageStart('${this}');
  }


  @mustCallSuper
  void dispose() {
    super.dispose();
    deactivate();
    
    // 清理缓存
    PaintingBinding.instance.imageCache.clear();

    LogEvent.onPageEnd('${this}');
    if (isListenEvent()) {
      EventManager.instance.cancel(this);
    }
  }

二,iOS 字体缩小/消失/挤出屏幕等问题

import 'dart:math' as math;

import 'package:flutter/material.dart';

class NoScaleTextWidget extends StatelessWidget {
  final Widget child;

  const NoScaleTextWidget({
    Key key,
    @required this.child,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaxScaleTextWidget(
      max: 1.0,
      child: child,
    );
  }
}

class MaxScaleTextWidget extends StatelessWidget {
  final double max;
  final Widget child;

  const MaxScaleTextWidget({
    Key key,
    this.max = 1.2,
    @required this.child,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    var data = MediaQuery.of(context);
    var scale = math.min(max, data.textScaleFactor);
    return MediaQuery(
      data: data.copyWith(textScaleFactor: scale),
      child: child,
    );
  }
}

class ScaleTextWidget extends StatelessWidget {
  final double scale;

  final Widget child;

  const ScaleTextWidget({
    Key key,
    @required this.scale,
    @required this.child,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    var data = MediaQuery.of(context);
    var scale = this.scale ?? data.textScaleFactor;
    return MediaQuery(
      data: data.copyWith(textScaleFactor: scale),
      child: child,
    );
  }
}

  @override
  Widget build(BuildContext context) {
    loadData();
    return MaterialApp(
      builder: (ctx, w) {
        return MaxScaleTextWidget(
          max: 1.0,
          child: w,
        );
      },
      theme: ThemeData(
        primarySwatch: Colors.blue,
        textTheme: TextTheme(
            title: TextStyles.titleStyle, button: TextStyles.titleStyle),
      ),
      home: homePage,

三,未授权导致图片保存失败

//每次都提示图片已保存成功,相册里并没有图片
  void _onSaveImage() async {
    print("_onImageSaveButtonPressed");
    final QrPainter painter = QrPainter(
      data: _appDownloadLink,
      color: const Color(0xff222222),
      emptyColor: const Color(0xffffffff),
      version: 4,
      gapless: true,
    );

    final ByteData imageData = await painter.toImageData(300.0);
    final result = await ImageGallerySaver.save(imageData.buffer.asUint8List());
    if (result) {
      toast("二维码已成功保存到手机相册");
    } else {
      toast("二维码保存到手机相册失败, 请查看App权限");
    }
  }
  @override
  void initState() {
    super.initState();
// 先要授权访问相册
    PermissionHandler().requestPermissions(<PermissionGroup>[
      PermissionGroup.storage, // 在这里添加需要的权限
    ]);

  }

文章来源地址https://www.toymoban.com/news/detail-721603.html

到了这里,关于Flutter 填坑录 (不定时更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flutter 实现定时滚动的公告栏的两种不错方式

    自定义一个类继承StatefulWidget 所有公告信息存放在list里 逻辑如下 我们可以发现启动了一个timer计时器计时5秒,hasClients检查其目标对象(我们用的是listview)是否被渲染,没有被渲染会出大乱子 另外,currentPostion根据当前偏移量得出,下一个position根据当前偏移量加上一个v

    2024年01月22日
    浏览(47)
  • Flutter 3.16 中带来的更新

    Flutter 3.16 中带来的更新 从此版本开始,Material 3 成为新的默认主题。你可以通过在 MaterialApp 主题中指定 useMaterial3: false 来选择不使用 Material 3,但 Material 2 最终将被弃用并删除。 你仍然可以通过在主题中指定来选择退出 M3 版本的 Material 库MaterialApp,但 Material 2 最终将被弃用

    2024年02月04日
    浏览(52)
  • Flutter在Android上的热更新方案

    flutter sdk版本:v3.0.3 dart版本:v2.17.5 1.1 FlutterApplication启动流程 按照安卓原生启动流程,当继承FlutterApplication且在AndroidManifest.xml将application:name设置后,除Content Provider初始化,Application流程将首先执行,此时FlutterApplication代码如下: FlutterApplication的onCreate只执行了FlutterLoader类

    2024年02月07日
    浏览(58)
  • Flutter 版本更新 和 dart SDK版本跟新

    报错啦怎么办? 找到了我的电脑里面dart SDK的位置, D:Flutterflutterbincachedart-sdk 我认为是dart的版本不够的时候,我就去下载新的dart SDK(下载地址:Archive | Dart ),然后去替换我之前的dart-sdk,然后就出现问题了,官方的flutter sdk中已经自带了匹配版本的dart sdk。所以不要自

    2024年02月14日
    浏览(45)
  • Flutter 3.16 发布,快来看有什么更新吧

    参考原文:https://medium.com/flutter/whats-new-in-flutter-3-16-dba6cb1015d1 Flutter 又又又发布新季度更新啦,同时随着而来的还有 Dart 3.2,本次 3.16 开始 Material 3 会成为新的默认主题,另外 Android 也迎来了 Impeller 的预览支持,另外还有 Flutter Casual Games Toolkit 的重大更新。 最重要的是,Im

    2024年02月04日
    浏览(42)
  • Android Studio更新新版本后无法创建flutter项目

    最新更新了AndroidStudio版本,发现无法创建flutter项目。 dart和flutter插件确认都已安装,该有的环境配置都已配置。 最后与同事的插件作比较发现是Android APK Support这个插件没勾选。 勾选后,点击右下角的apply,重启AndroidStudio。 然后去点击File--New--New Flutter Project。

    2024年02月09日
    浏览(47)
  • Dart 3.2 更新,Flutter Web 的未来越来越明朗

    参考原文:https://medium.com/dartlang/dart-3-2-c8de8fe1b91f 本次跟随 Flutter 3.16 发布 的 Dart 3.2 ,包含有:私有 final 字段的非空改进、新的 interop 改进、对 DevTools 中的扩展支持、以及对 Web 路线图的更新,包括对 Wasm 的Web 组件支持。 最重要的就是 Wasm 的Web 组件支持。 自 Dart 2.12 发布

    2024年02月05日
    浏览(36)
  • flutter开发实战-应用更新apk下载、安装apk、启动应用实现

    flutter开发实战-应用更新apk下载、安装apk、启动应用实现 在开发过程中,经常遇到需要更新下载新版本的apk文件,之后进行应用更新apk下载、安装apk、启动应用。我们在flutter工程中实现下载apk,判断当前版本与需要更新安装的版本进行比对判断,通过判断VersionCode来确定下载

    2024年02月02日
    浏览(57)
  • Google I/O 2023 - Flutter 3.10 发布,快来看看有什么更新吧

    核心部分原文链接:https://medium.com/flutter/whats-new-in-flutter-3-10-b21db2c38c73 虽然本次 I/O 的核心 keynote 主要是 AI ,但是按照惯例依然发布了新的 Flutter 稳定版,不过并非大家猜测的 4.0,而是 3.10 ,Flutter 的版本号依然那么的出人意料。 Flutter 3.10 主要包括有对 Web、mobile、graphics、

    2024年02月04日
    浏览(52)
  • Flutter实现点击头像更新头像的功能,本地相册选取和调用相机两种方式的实现

    Flutter实现点击头像更新头像的功能,需要实现本地相册选取和调用相机两种方式的实现。 用InkWell包住了我们的头像,这样来监听点击头像的事件 InkWell 是一个非常常用且功能强大的小部件。InkWell 可以用于为Flutter应用添加水波纹效果,以及捕获和处理用户的点击手势。 In

    2024年02月15日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包