flutter photo_view的改造】的更多相关文章

app中对图片的浏览.缩放是一个常用的功能,目前有一款插件photo_view,基本上可以满足这些功能,但是有些地方需要修改完善 1.双击放大的时候,有三个状态,会有一个放大的中间状态,需要点击三次才能回到原始大小,这个不太符合用户的操作习惯,用户一般就是双击放大,然后在双击返回 2.缩小的时候,即使图片缩小到最小比例了,还需要双击下才能翻页,这个影响用户体验 3.放大的时候,不能翻页,很多app对图片浏览,即使是放大的时候也是可以翻页的,并且放大的状态保留,由于此插件基于pageview组件,…
背景 6月下旬,我们首次尝试用Flutter开发AI拍app.开发的调研准备阶段没有参考业界实践,导致我们踩到一些填不上的坑.在这些坑中,最让我感到棘手的是Flutter和原生页面混合栈管理的问题. 为了解决这一问题,我们对Flutter工程进行了一些改造. 问题的发现 在完成主要功能后,我们提交了1.0.0内测版本.经测试人员发现该问题,并在Jira上提出. 问题分析 Android任务栈   Flutter页面管理 FlutterActivity & FlutterActivityDeleg…
饿补一下Flutter中Http请求的异步操作. Dart是一个单线程语言,可以理解成物理线路中的串联,当其遇到有延迟的运算(比如IO操作.延时执行)时,线程中按顺序执行的运算就会阻塞,用户就会感觉到卡顿,于是通常用异步处理来解决这个问题. Dart异步编程有两种方式:Future和Stream Future相当于40米大砍刀,Stream相当于一捆40米大砍刀.dart提供了关键字async(异步)和await(延迟执行),相当于普通的便捷的小匕首,而小匕首是我们平时经常用到的. 当遇到有需要…
饿补一下Flutter中Http请求的异步操作. Dart是一个单线程语言,可以理解成物理线路中的串联,当其遇到有延迟的运算(比如IO操作.延时执行)时,线程中按顺序执行的运算就会阻塞,用户就会感觉到卡顿,于是通常用异步处理来解决这个问题. Dart异步编程有两种方式:Future和Stream Future相当于40米大砍刀,Stream相当于一捆40米大砍刀.dart提供了关键字async(异步)和await(延迟执行),相当于普通的便捷的小匕首,而小匕首是我们平时经常用到的. 当遇到有需要…
Dart是一个单线程语言,可以理解成物理线路中的串联,当其遇到有延迟的运算(比如IO操作.延时执行)时,线程中按顺序执行的运算就会阻塞,用户就会感觉到卡顿,于是通常用异步处理来解决这个问题. Dart异步编程有两种方式:Future和Stream Future相当于40米大砍刀,Stream相当于一捆40米大砍刀.dart提供了关键字async(异步)和await(延迟执行),相当于普通的便捷的小匕首,而小匕首是我们平时经常用到的. 当遇到有需要延迟的运算(async)时,将其放入到延迟运算的队…
为了弄懂Flutter的状态管理, 我用10种方法改造了counter app 本文通过改造flutter的counter app, 展示不同的状态管理方法的用法. 可以直接去demo地址看代码: https://github.com/mengdd/counter_state_management 切换分支对应不同的实现方式. Contents Flutter中的状态管理 状态分类 状态管理方法概述 Counter sample默认实现: StatefulWidget InheritedWidg…
因为项目有大量的下拉面板,而默认的组件(默认的padding.颜色.大小)不是我们UI设计上想要的,但是每个地方都要去改又很麻烦.于是我就想,可以对这个组件进行定制化改造,传入一些颜色.参数.图标大小之类的参数(当然还有其他方法,比如继承默认组件,然后根据ui设计进行兼容开发),使其符合我们的UI设计,并且减少时间研究此组件的时间(因为项目分三个人开发) 研究了下该组件的源码,对其进行了以下改造: ExpansionPanelCustomList( animationDuration: Dura…
一直以来,跨平台开发都是困扰移动客户端开发的难题. 在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如 WebView 和 React Native,来提升开发效率和用户体验.但这两种方式也带来了新的问题. 比如使用 WebView 跨平台方式,优点确实非常明显.基于 WebView 的框架集成了当下 Web 开发的诸多优势:丰富的控件库.动态化.良好的技术社区.测试自动化等等.但是缺点也同样明显:渲染效率和 JavaScript 的执行能力都比较差,使页面的加…
前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flutter. 官方 WIKI 有说明,但是里面坑还是不少的,变化也是存在的. 因此就让我们来看一看. 目录 1. 按照官网实现基本引入 Add Flutter to existing apps 上面为GitHub WIKI 的引入方式,通过 Module 的形式进行引入. 可以看出文档还是在不断更新的…
跳转 命名路由 在文件构建时先设置路由参数: new MaterialApp( // 代码 routes: { "secondPage":(BuildContext context)=>new SecondPage(), }, ); 在需要做路由跳转的时候直接使用: Navigator.pushNamed(context, "secondPage"); 构建路由 Navigator.push(context, new MaterialPageRoute(bui…