首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

重新打开对话框时,Flutter gif不会再次播放

Flutter是一种跨平台的移动应用开发框架,它使用Dart语言进行编写。在Flutter中,可以使用GIF动画来增加应用的交互性和视觉效果。当重新打开对话框时,Flutter GIF不会再次播放的原因是因为对话框的状态没有被重置。

为了解决这个问题,可以在对话框关闭时手动重置GIF动画的状态。具体的做法是在对话框的关闭回调函数中,将GIF动画的控制器重置为初始状态。这样,当再次打开对话框时,GIF动画就会重新播放。

以下是一个示例代码,展示了如何在Flutter中重新播放GIF动画:

代码语言:txt
复制
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gifimage/flutter_gifimage.dart';

class MyDialog extends StatefulWidget {
  @override
  _MyDialogState createState() => _MyDialogState();
}

class _MyDialogState extends State<MyDialog> with SingleTickerProviderStateMixin {
  GifController _controller;

  @override
  void initState() {
    super.initState();
    _controller = GifController(vsync: this);
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  void _resetAnimation() {
    _controller.reset();
    _controller.forward();
  }

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: Text('My Dialog'),
      content: Column(
        children: [
          GifImage(
            controller: _controller,
            image: AssetImage('assets/my_animation.gif'),
          ),
          RaisedButton(
            child: Text('Replay Animation'),
            onPressed: _resetAnimation,
          ),
        ],
      ),
      actions: [
        FlatButton(
          child: Text('Close'),
          onPressed: () {
            Navigator.of(context).pop();
          },
        ),
      ],
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(
        title: Text('Flutter GIF Dialog'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('Open Dialog'),
          onPressed: () {
            showDialog(
              context: context,
              builder: (BuildContext context) {
                return MyDialog();
              },
            );
          },
        ),
      ),
    ),
  ));
}

在上述示例代码中,我们使用了flutter_gifimage库来加载和控制GIF动画。在对话框的_MyDialogState类中,我们创建了一个GifController对象来控制GIF动画的播放。在对话框关闭时,通过调用_resetAnimation函数来重置动画的状态,使其能够重新播放。

这只是一个简单的示例,实际应用中可能需要根据具体情况进行适当的修改。另外,如果需要更多关于Flutter和相关技术的信息,可以参考腾讯云的Flutter相关产品和文档,例如:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mmp
  • 腾讯云移动开发文档:https://cloud.tencent.com/document/product/876

希望这个答案能够帮助到你!

相关搜索:单击网格按钮时,Kendo UI窗口不会再次打开验证对话框在重新打开时重置内容我如何才能使当再次启动协程时,它不会再次播放对话?键盘打开或关闭时重新加载Flutter页面Python -通过Pillow打开时,GIF不会移动并指定不同的名称Exoplayer -在重新打开活动时反复播放相同的音频关闭对话框后再次打开对话框时,应用程序崩溃,返回'java.lang.IllegalStateException‘Aurelia路由器-查看内部对话框在重新打开对话框时不工作当我更新ListView上的列表时,Flutter页面不会重新加载Flutter -如何在调用操作按钮时重新加载整个页面(再次重新加载带有初始状态的小部件)?jQuery对话框不会在第一次单击时打开当我关闭并重新打开MS Access时,表中的数据不会更新当ScriptableObject关闭然后重新打开时,它不会显示在检查器中revert rejected对话框/表单以在重新打开时显示上次接受的值JSON文件在筛选器中时不会显示在打开文件对话框中重新加载页面时,Gif不起作用。仅在第一次打开窗口时起作用当我再次切换到选项卡时,如何停止我未来的构建器重新加载?- Flutter/dartpm2 autostart discord.js机器人在重新启动时不会再次连接(树莓派)在使用相同名称重新打开时,shm_open()失败,尽管再次使用了O_CREAT仅当在Emulator中关闭和重新打开时,Dart/Flutter应用程序才会引发异常
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Flutter&Flame 游戏 - 贰柒】pinball 源码分析 - 角色选择与玩法面板

    并且会展示角色选择的面板,效果如下: *注* :为了减少 gif 的大小,生成采用 6fps ,所以实际效果要你下图流畅很多。 ---- 在选择对应的角色图标,背景会进行对应的变化。...从 build 逻辑中可以看出:选中,透明度是 1 ,否则是 0.4 ,这和实际操作是吻合的。...所以这里通过 BlocBuilder 让组件跟随 CharacterThemeState 的变化而重新构建。...程序的最终目的是实现需求,像先迈左脚,还是右脚;用袋子装鸡蛋,还是用篮子装鸡蛋;喝可乐开还喝绿茶;这并不会影响最终的目的。结合场景和个人的喜好即可,并没有必要强制必须如何如何。...---- 对话框界面的构建逻辑如下,显示的主体是 PinballDialog 对话框对话框的内容会根据 是否是移动端 进行适配。

    97640

    Flutter 中与平台相关的生命周期

    有人下场景,App正在播放视频,此时回到手机桌面或者切换到其他App,那么此时视频应该暂停播放Flutter 中使用 AppLifecycleState 实现: class AppLifecycle...在Android上,分屏应用,打电话,弹出系统对话框或其他窗口等。 pause:应用程序不可见且无法响应用户输入,运行在后台。...处于此状态,引擎将不会调用 Window.onBeginFrame 和 Window.onDrawFrame。 detached:应用程序仍寄存在Flutter引擎上,但与平台 View 分离。...从A->B,在从B返回A,A重新加载数据使用如下方法: A页面代码: class A extends StatelessWidget { @override Widget build(BuildContext...Navigator.of(context).push(MaterialPageRoute(builder: (context){ return B(); })); //从B返回到A

    72610

    Flutter Web: 如何在页面中使用web原生组件及交互

    前言 flutter开发经常会与原生打交道,flutter web也一样,尤其在web开发,因为flutter web还不成熟,第三方库缺少,很多功能需要依靠web原生来实现,比如音视频,录音等等...用视频举例,需要用html和js来实现一个视频播放器,然后在flutter页面中使用这个播放器,这如何来实现?...ui.platformViewRegistry.registerViewFactory注册HtmlElement 使用HtmlElementView,通过viewType加载HtmlElement即可 上面只是直接打开了一个页面...但是我们使用的时候发现,无论我们怎么重新创建WebTest这个组件(用不同的参数),我们使用的一直都是第一次创建这个组件的参数。也就是说后续的创建其实没有创建而是直接复用?...而使用动态viewType就不再有这样的问题,每次都会重新执行js。 交互 这种嵌入的web组件也会有与flutter进行交互的需求。

    2.1K40

    Flutter 3.3更新详解

    将模拟的手势事件进行了下发 从 Flutter 3.3 开始,使用触控板滚动会正确地滚动列表,因为 Flutter 会传递「滚动」事件,卡片不会识别这些事件,而列表会进行对应的处理 想了解更多信息,请访问....gif https://www.devio.org/img/post/202211/flutter3.3/2433c0005f1711edad25acde48001122.gif 桌面端平台 Windows...首先,打开图片时数据会被拷贝至原生的堆内存并向 Dart 暴露出结构数组。然后,数据会在结构数组转换至内置存储的 ui.ImmutableBuffer 再次拷贝。...应用可以增加最大虚拟内存的分配量,但这项操作仅在较新的 iOS 版本上可用,并不适用于其他 Flutter 支持的 iOS 设备版本。当我们能够在所有位置使用这项优化时,我们会重新进行评估。...因此 Flutter 将会在未来的稳定发行版中移除对 bitcode 的支持。我们不希望影响到很多的开发者,因此默认情况下,Flutter不会开启 bitcode。

    2.9K20

    Windows 罕见技巧全集3

    1.重新启动Windows 点“开始”|“关闭系统”以后,在“关闭Windows”对话框中,按住Shift键不放, 用鼠标点击“重新启动计算机”,再点“是”按钮,释放Shift键。...这时鼠标会变成十字型,用鼠标在幻灯片上拖动画出播放Flash的区域,在其上单击鼠标右键,选择属性,弹出属性对话框,单击自定义后边“…”,弹出属性页对话框,输入Flash文件的地址。...,打开“自定义设置”对话框,接着选择“通过单击打开项目(指向选定)”选项,并单击“确定”按钮关闭对话框,以后就可以通过鼠标单击直接启动应用程序了,很方便哦。...再次启动QQ就会出现注册向导,输入你的号码,通过验证后就可以了,和安装后第一次启动一样**作。...82.在PowerPoint中使演示文稿自动播放 打开演示文稿,执行“幻灯片放映/设置放映方式”命令,在打开对话框中选中“在展台浏览(全屏幕)”选项,此时下方的“循环放映,按Esc键终止

    1.5K10

    FlutterFlutter 调试 ( Debug 调试窗口 | 手机日志信息查看 | 设置普通断点 | 设置表达式断点 )

    二、Debug 调试窗口 ---- Flutter 调试工具 Debug : 点击下图的 Debug 按钮 , 即可进行调试 , 调试 Flutter 项目 , 底部显示 Debug 视窗 ,...Studio 打开 Flutter 中的 Android 部分代码 , 然后在 Logcat 中查看 ; Android 平台的日志直接在 Android Studio 中的 Logcat 窗口中查看...; 调试 iOS 项目 , 使用 Xcode 打开 Flutter 中的 iOS 项目进行调试 ; iOS 平台的日志需要在 Mac 中 , 打开 Xcode , 在 Xcode 中的控制台中 ,...代码运行到断点位置 , 就会被暂停 , 此时可以查看当前状态下运行情况 , 如变量值 ; 五、设置表达式断点 ---- 默认情况下设置的断点是普通断点 , 还可以设置 表达式断点 , 右键点击断点 , 会弹出如下对话框..., 在对话框中输入 5.0 , 意味着该表达式值为 5.0 , 断点才会被执行 , 设置了表达式断点后 , 重新运行 , 程序运行到该 " 表达式断点 " 位置 , 获得 六、相关资源 --

    1.9K30

    Tina_Linux_图形系统_开发指南

    还提供了一个函数,可以在应用层控制是否使用双buffer,比如在打开界面前打开双缓冲,打开界面之后停止使用双缓冲。...说明:当前只实现了 bmp 、 png 和 gif 图片的内存申请, jpeg 图片暂未实现。...高效:使用热重载(HotReload)快速构建和迭代你的产品,更新代码之后可以立即看到变化,且不会丢失应用状态。...video_player 视频播放测试app应用 flutter_eglfs 预编译加载flutter app的应用,用gpu渲染,支持旋转 flutter_fbdev 预编译加载flutter app...的应用,用cpu渲染,暂时不支持旋转 flutter-client 预编译加载flutter app的应用,用gpu渲染,支持旋转与视频播放 libvideo_player_plugin.so 视频播放插件

    13.3K10

    Flutter学习笔记:BottomNavigationBar实现多个Navigation

    最近我研究了一下Flutter,但是在使用Navigator的时候遇到了一个很头痛的问题,就是当我们去来回切换导航按钮Flutter重新build,从而导致控件重新Build,从而会失去浏览历史。...这样我们在切换标签不会丢失Navigation历史记录。 如下图: ? multiple-navigators-BottomNavigationBar-animation.gif 如何实现此功能?...widgets> ▼ App ▼ Scaffold ▼ body: ▼ BottomNavigationBar 如果我们打开...如果我们再次运行应用程序,我们可以看到按下后退按钮会解除所有推送路线,只有当我们再次按下它我们才会离开应用程序。 ?...1_qQW2iGXiWL2F1tu6cLQfwg.gif 需要注意的一点是,当我们在Android上推送新路线,会从底部滑入。 相反,惯例是在iOS上从右侧滑入。

    4.3K20

    全志 Tina Linux 图形系统 框架介绍 最全介绍 MiniGUI、QT5、EFL、GTK+(WebkitGtk、Midori)、DirectFB、Wayland

    还提供了一个函数,可以在应用层控制是否使用双buffer,比如在打开界面前打开双缓冲,打开界面之后停止使用双缓冲。...说明:当前只实现了 bmp 、 png 和 gif 图片的内存申请, jpeg 图片暂未实现。...高效:使用热重载(HotReload)快速构建和迭代你的产品,更新代码之后可以立即看到变化,且不会丢失应用状态。...video_player 视频播放测试app应用 flutter_eglfs 预编译加载flutter app的应用,用gpu渲染,支持旋转 flutter_fbdev 预编译加载flutter app...的应用,用cpu渲染,暂时不支持旋转 flutter-client 预编译加载flutter app的应用,用gpu渲染,支持旋转与视频播放 libvideo_player_plugin.so 视频播放插件

    16.9K10

    Flutter 专题】51 图解动画小插曲之 Flare 动画

    和尚前两天学习了一下 Lottie 动画,确实很方便,今天来尝试一下 Flare 动画,学习 Flutter 的朋友对此并不陌生,Flare 可以为 App/游戏/网页等制作酷炫的矢量动画模型...和尚选择一个开源的动画进入详情页,可以在 open in flutter 中进行自定义调整;可以添加或处理资源样式动画的贝塞尔曲线等,同时根据需求处理是否循环播放,可减少代码中处理; ? ?...在文件中添加引用库 import "package:flare_flutter/flare_actor.dart"; 3....,若没有 animation 参数或内容有误,最终展示的动画的第一帧; ?...动画播放完成的回调;当动画设置的是循环播放则无法监听;当动画为非循环模式播放完成第一遍后可监听结果;和尚测试若再次 play('animation') 动画会重新播放一次,不会一直循环重复,该监听方法只有一次

    1.3K41

    免费且好用的GIF录制软件LICEcap

    如果录制为.LCF,则可以在REAPER中播放.LCF文件(和/或使用它转换为.gif或其他视频格式)。...展示一下大致的录制效果: 输出的GIF如下: 功能和选项 直接记录到.GIF或.LCF。 录制移动屏幕捕获框。 暂停并重新开始录制,并插入可选的短信。...全局热键(Shift +空格键)可在录制切换暂停 可调最大录制帧速率,以限制CPU使用率。 基本标题框架,带或不带文本。 记录鼠标按钮的按下。 显示录制中经过的时间。...https://www.cockos.com/licecap/ 适用于macOS的LICEcap v1.30(2020年4月4日)(540kb DMG) macOS:修复了macOS 10.15+保存对话框默认扩展名问题...LCF:修复打开输出文件出错的崩溃 gif:使用WDL_FileWrite而不是fopen()/ _ wfopen()写入磁盘,在写入时锁定文件

    2.4K31

    flutter 起步

    GPU和UI曲线图,可即时查看当前流畅度情况19. checkerboardRasterCacheImages当为true打开光栅缓存图像的棋盘格20. checkerboardOffscreenLayers...当为true打开呈现到屏幕位图的层的棋盘格21. showSemanticsDebugger当为true打开Widget边框,类似Android开发者模式中显示布局边界22. debugShowCheckedModeBanner...persistentFooterButtons - 固定在下方显示的按钮,比如对话框下方的确定、取消按钮。drawer - 抽屉菜单控件。...全局变量和静态成员变量,这些变量不会在热刷新更新。修改了main函数中创建的根控件节点,Flutter在热刷新后只会根据原来的根节点重新创建控件树,不会修改根节点。...persistentFooterButtons - 固定在下方显示的按钮,比如对话框下方的确定、取消按钮。drawer - 抽屉菜单控件。

    4.5K20

    【技术创作101训练营】Flutter Routes 路由应用与封装小结

    PPT Flutter路由应用与封装小结.pdf 因 PPT 超过最大允许上传大小,因此上传为 PDF 格式,同时为 PPT 中制作了一些 GIF 图,在演讲稿中展示;各位老师辛苦了!...PushReplacement 栈内打开新 Route 替换旧 Route       (Page 12)如图所示,从 PageB -> PageC 使用 PushReplacement 方式会打开将...PushAndRemoveUntil 栈内打开新 Route 清空部分旧 Route       (Page 14)如图所示,从 PageB -> PageC ,可以清空栈内部分连续 Route,而清空多少个...PopAndPushNamed 栈内清除当前 Route 并打开新 Route       (Page 16-17)如图所示,从 PageB -> PageC ,使用 popAndPushNamed...不仅可以判断还可以执行 Pop 出栈操作,可以在实际场景中灵活应用;       (Page 20)和尚再以静态方式和动态方式为维度再次回顾一下;动态方式主要包括三类: push 入栈 pushReplacement

    1.3K102

    H5上传文件又双叒叕开测了!

    “删除”按钮不可点击; (2)勾选文件后,显示本次删除的文件数,点击删除弹出删除的二次确认对话框; (3)下滑刷新加载更多数据,支持勾选多个文件进行批量删除; 6.上传中的文件不能删除,上传完成和转码失败的文件可删除...用默认图代替; (3)上传图片的文件标题显示两行,超过两行显示不下用...表示; (4)图片文件支持gif、jpeg、jpg、png格式文件; 10.支持单个文件上传和最多批量上传5个文件,上传完后自动刷新当前页面.../慢退15s; 2.视频快进或后退调整后,仍为原始的播放或暂停状态; 3.视频声音和画面正常,支持静音播放和取消静音播放; 4.支持上传视频封面,选择图片作为封面后,视频在未播放默认使用上传的图片作为封面...; 微博账号: 1.打开选择账号窗口,默认勾选全部有效的账号,授权过期的账号置灰不可选,重新授权绑定后可选; 2.点击“全选”可全选所有账号,再次点击“全选”取消全选; 3.在单个账号后,点击选择框,可选择...则立即将视频和博文分享到微博; 预览: 1.点击预览,跳转到新页面,在底部显示“生成预览中”,5秒后提示消失; 2.预览页面显示logo和用户头像及昵称,博文,视频,“复制预览链接”; 3.若视频上传了封面,则视频未播放

    1.7K20

    面试简书(五)

    c.懒加载 当我们打开一个页面,浏览器就会从上往下读取页面中的标签src中的地址,并且开启线程来进行加载。...2.video标签播放中和播放之后均会覆盖dom。 3.浏览器同时只能播放一个video标签。当切换播放视频内容体验不是很好: 浏览器播放组件切换视频花费的时间可以明显的感知的到。...浏览器播放组件的底色一般是黑色,而我们的web底色大多时候不是黑色,切换,会出现闪动。是由于浏览器播放组件的关闭然后再次打开造成的。...比如: 我们要解决弹窗被视频遮挡的问题,此时我们可以将视频这一节点刷新(删除后再次添加) 我们想要切换视频,就先把当前正在播放的视频刷新,然后播放下一个视频。...www.jianshu.com/p/ea7c0ee8aa64 4.上传图片 1.表单上传 最传统的图片上传方式是form表单上传,使用form表单的input[type=”file”]控件,打开系统的文件选择对话框

    1.1K10

    Flutter 插件开发:iOS篇

    但是现实是现实,例如当遇到定制化的功能,编写插件是不可避免的。譬如我们有一个自定义协议的蓝牙功能,这个功能在Flutter中就不可能直接拿来使用了,需要编写插件让Flutter进行调用。...播放音视频的Flutter插件已经有一些优秀的三方库已经实现了。...说明: 由于是音频播放,我制作GIF的时候没法体现音乐元素,所以音乐只能我自己独自欣赏了,哈哈~~ 本文先只介绍iOS的插件制作,下篇文章我们再来介绍Android的插件制作。 架构概览 ?...0; } iOS端的代码 前提:需要用Xcode打开iOS项目,这是开始编写的基础。...; _totalPlayTimeController是总播放时长的流,当调用add方法,onTotalTimeChanged的监听者就能收到新的值; StreamBuilder监听流的数据 StreamBuilder

    3.6K20
    领券