自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 Flutter 类似onResume 监听,解决入场动画卡顿(2)

接着完善上一篇内容,上一篇我们是能监听到初次进入路由页面节点,往往还想监听从当前路由跳转到其他路由后,再返回到当前路由页面,上一篇内容就无法满足当前需求了,不过我们完全可以按照上一篇的原理实现这个需求。为第一次进入路由页面回调。

2023-10-25 09:31:19 490

原创 Flutter 类似onResume 监听,解决入场动画卡顿

那可不可以实现在路由进场完成后,再去请求数据,刷新界面呢,很遗憾官方没有类似的监听,官方提供的路由状态监听,是在调用push切换路由时,立即生效,和我们的期望不一致。由于Flutter性能原因,也获取因为数据量比较大,在新页面路由进场动画执行过程中,接口请求结果回来了,很可能在进场动画执行过程中,刷新界面,导致进场动画卡顿。在Flutter 实际开发过程中,页面数据往往是异步加载,接口请求回来后,数据刷新显示到界面上。在查看了Flutter 源码,发现了一个取巧的方案,提供给大家。

2023-10-21 15:17:44 1133

原创 一行代码解决Flutter fl_chart库触摸线条提示和页面左右滑动冲突

现在项目中多个Tab页面放置了图表控件,图表支持触摸弹出线条指引提示,在实际项目接入过程中测试发现,长按线条时,左右滑动指引提示,Tab不跟随滑动,但是当触摸时间不长,刚出现线条指引时立刻左右滑动页面,线条指引消失了,页面也变成了Tab左右滑动了,达不到想要的交互需求。我们可以看到该长按识别器,支持duration自定义,我们完全可以控制这个时间让它在很短时间内进入长按识别,进而可以一直捕获到手势,不至于滑动时执行onCancel。现在转变思想,当触摸时间比较短时,让长按识别器捕获手势即可。

2023-09-19 20:41:39 387

原创 TheRouter 框架原理

我们在按照TheRouter框架添加了各种注解后,在编译期间,会自动生成一个合成类,将我们添加了@FlowTask(taskName = "xxx")注解的方法全部放到一个静态public static void addFlowTask(android.content.Context context, com.therouter.flow.Digraph digraph)方法中。继续接着执行Init方法,开始执行asyncInitRouteMap()方法,该方法主要是用来加载路由配置。

2023-09-07 09:40:56 533

原创 Rust 自建HTTP Server支持图片响应

Rust 自建HTTP Server支持图片响应

2023-06-23 16:22:40 916

原创 Android 使用MediaDecode 各种坑

MediaCodec 新手上路的各种坑

2023-04-28 20:27:49 1122 2

原创 Mac 编译x264源码No working C compiler found 错误

Mac 编译x264源码No working C compiler found 错误

2023-03-07 17:03:26 1091

原创 Flutter Scrollable 中ViewPort滚动原理

Flutter Scrollable 中ViewPort滚动原理

2023-02-28 20:25:56 838

原创 ImageProvider工作流程和AssetImage 加载流程

ImageProvider工作流程和AssetImage 加载流程

2022-11-23 17:24:55 816

原创 Flutter ChangeNotifier select提升性能细节

Flutter ChangeNotifier select提升性能细节

2022-10-26 10:11:55 631

原创 还是Android AP配网哪些事

Android AP配网那些事

2022-10-19 10:08:37 975

原创 Dart external关键字

Dart external关键字

2022-09-26 15:50:41 1190

原创 Flutter TextField 点击时光标如何定位位置

Flutter TextField 点击时光标如何定位位置

2022-09-19 20:17:25 2825

原创 Mac M1解决mach-o, but wrong architecture

Mac M1解决mach-o, but wrong architecture

2022-08-17 15:54:23 1196

原创 Flutter TapGestureRecognizer 如何工作

Flutter TapGestureRecognizer 如何工作

2022-08-03 10:36:20 1185

原创 Flutter 父子组件如何都能收到点击事件

Flutter 手势识别

2022-08-02 14:47:42 1179

原创 Flutter 打印Widget 层级列表

Flutter 打印组件层级列表

2022-07-18 19:05:52 568

原创 Flutter ListView controller.animateTo 无效

Flutter ListView controller.animateTo 无效

2022-07-15 17:49:09 1649

原创 LaMDA 不可能觉醒吗?

LaMDA 不可能觉醒吗?

2022-06-16 10:46:28 764

原创 Flutter Web 硬件键盘监听

Flutter web在开发页面时使用到键盘监听,网上找了一圈都推荐使用RawKeyboardListener组件但是在实际开发过程中发现该组件时常失灵导致无法监听到键盘输入。现在给出解决方案,使用HardwareKeyboard对象。使用方法获取HardwareKeyboard 单例,然后添加自己的回调方法 late HardwareKeyboard hardwareKeyboard; @override void initState() { hardwareKeybo

2022-05-18 10:07:12 1191 2

原创 Flutter 跨平台条件import不同包

Flutter 条件Import不同依赖

2022-04-27 11:19:13 3650

原创 Flutter中Mobx的实现原理

Mobx 可能先前H5 使用的较多,楼主为Android 原生开发转Flutter ,对Mobx较为陌生,在使用Mobx时想确认该框架如何实现局部刷新。本文只涉及Mobx 局部刷新的实现原理,Mobx的具体使用方法,可以百度查询Mobx会自动创建xxxx.g.dart 文件 @override String? get currentShowCard { _$currentShowCardAtom.reportRead(); return super.currentSh

2022-02-14 15:24:07 1100

原创 Flutter工程依赖其他Library的module

Flutter工程项目想要使用其他Library的module如何使用呢?Flutter工程在选择依赖时,往往一个一个依赖就是一个库,那如果依赖库又有依赖,单独将每一个库都创建一个仓库单独放置也是可以的,这里提供另外一种思路。将所有依赖的module放置到一个工程里面,然后将这个工程上传到远程这里需要注意工程根目录需要创建pubspec.yamlname: mylibrarydescription: library.# The following line prevents the

2022-01-20 14:19:07 2171

原创 深入理解Flutter 源码刷新机制--------relayoutBoundary的妙用

大家有没有想过,当子widget属性变化后,通过setState通知底层引擎刷新,那么当前页面上的所有Widget都会刷新吗,准确说应该是RenderObject Tree会整个刷新吗?聪明的你肯定能想的到,当然不会把整个RenderObject Tree刷新当一个组件的大小被改变时,其parent的大小可能也会被影响,因此需要通知其父节点。如果这样迭代上去,需要通知整棵RenderObject Tree重新布局,必然会影响布局效率。因此,Flutter通过RelayoutBoundary将Rend

2022-01-17 16:10:25 2036

原创 深入理解Flutter 源码刷新机制--------一个例子讲清渲染流程

结合前面几篇文章,今天我们例举一个简单的demo说明Flutter刷新机制demo说明:创建一个StatefulWidget 里面放置一个定时器,每间隔10s刷新一次,然后将容器背景改成随机颜色import 'dart:async';import 'dart:math';import 'dart:ui';import 'package:flutter/material.dart';void main() { runApp(DemoWidget());}class Demo

2022-01-13 20:53:30 1514

原创 深入理解Flutter 源码刷新机制--------一张图讲清渲染流程

在分析Flutter渲染逻辑时,往往逻辑绕来绕去,看起来吃力头疼。在其他网站找到一张这样的流程图能过清晰明了的说明Flutter渲染流程如上图:当 RenderObject 需要重新 layout 时,调用markNeedsLayout方法,该方法会将当前 RenderObject 加入 PipelineOwner#_nodesNeedingLayout或传给父节点去处理; 当 RenderObject 的 Compositing Bits 有变化时,调用markNeedsCompos..

2022-01-13 17:48:14 1088

原创 深入理解Flutter 源码刷新机制------被遮挡路由如何被分离

接上篇https://blog.csdn.net/bawomingtian123/article/details/122407247上一篇我们分析到旧路由被新的路由覆盖后,跟踪源码发现,即使旧的路由在定时调用setState 方法,由于Flutter刷新机制,该路由页面不会重新paint,从而达到高性能的目标。那Flutter是如何做到被覆盖的路由即使调用setState也不被刷新呢,我们还是从上一篇文章结尾聊起/// Update the display lists for all rend

2022-01-13 16:22:36 689

原创 深入理解Flutter 源码刷新机制-----路由覆盖会被刷新吗?

被遮挡路由会被刷新吗?通过分析源码发现,被遮挡的路由是不会被刷新,这里的刷新是只不会被paint我们知道state在调用了setState后实际是调用了_element!.markNeedsBuild()分析markNeedsBuild源码发现,该方法会把当前element标记为dirty脏数据, void markNeedsBuild() { ... if (dirty) return; _dirty = true; owner!.schedule

2022-01-10 12:21:08 657

原创 Flutter Web 鼠标样式修改

在使用Flutter开发Web中为了更好的交互体检,往往会根据需求动态修改鼠标样式。MouseRegion( cursor: judgeMouseCursor(), onEnter: (PointerEnterEvent event) { mouseDragDirection = -1; }, onExit: (PointerExitEvent event)

2021-12-28 17:06:15 2014

原创 Flutter 使用Dart Format格式化代码

在实际工作中,我们可能在一些页面展示源码,源码可能是字符串拼接动态生成,那么这样的拼接代码在展示时,由于空格和换行影响往往展示效果极差,Android Studio自带的代码一键格式化功能够完美的解决这个问题,这个也是我们想要的效果。由于Flutter开发使用的是Dart语言,它的语言特性和其他语言有一定差异,在网上百度了一圈也没有很好的解决方案,最后在Google后发现了官方的解决方案。GitHub - dart-lang/dart_style: An opinionated formatter/

2021-12-20 21:04:09 3206

原创 Flutter TextField 设置边框无效

在使用TextField组件时,想要设置外边框颜色,按照下面写法设定无效TextField( decoration: InputDecoration( contentPadding: EdgeInsets.all(10.0), border: OutlineInputBorder( borderRadius: BorderRadius.circular(0.0),

2021-12-15 16:01:24 3444

原创 Flutter 修改Slider 滑杆刻度

在使用Flutter自带的Slider组件时,使用divisions字段后,滑杆会显示刻度小点,需求是隐藏刻度实现方式:自定义tickMarkShape,强制修改activeTickMarkColor和inactiveTickMarkColorimport 'package:flutter/material.dart';/// Created by bawomingtian on 9.12.21./// 隐藏Slider滑杆刻度class AllocateRoundSliderTickMa

2021-12-09 14:08:47 1589

原创 修改Flutter Material主题Slider线条宽度

在使用Flutter自带的slider组件时,发现自带的slider显示效果不理想,左边线条明显大于右边查看Flutter源码发现,底层会对左边线条增加2个像素的宽度解决方案:使用自定义SliderTheme包裹Slider组件,自定义RoundedRectSliderTrackShape复现里面paint方法 void paint( PaintingContext context, Offset offset, { required RenderBox pa

2021-12-09 10:45:25 2916

原创 Flutter 鼠标右键

import 'package:universal_html/html.dart';void main() {​ // Disable the default browser behavior for right clicking // 屏蔽浏览器默认的右键点击事件 window.document.onContextMenu.listen((evt) => evt.preventDefault());​ runApp(MyApp());}//具体使用Contain.

2021-12-06 14:08:28 3120

原创 Flutter Web读写文件

Read:Use this library to select a file:pub.dev/packages/file_picker(Web migration guide)import 'dart:html' as webFile;import 'package:file_picker_web/file_picker_web.dart' as webPicker;if (kIsWeb) { final webFile.File file = await webPicker.Fil..

2021-12-02 15:18:41 2669

原创 Rust 插入排序

//插入排序fn insert_sort(array:&mut [i32]) -> &mut [i32]{ let len = array.len(); let mut i = 1; let mut j = 0; let mut _tmp = 0; while i<len { j = i; _tmp = array[i]; while j>0&&array[j-1]>_tmp { .

2021-11-25 17:16:43 188

原创 Rust 选择排序

Rust 选择排序//选择排序fn select_sort(array:&mut [i32]) ->&mut[i32]{ let len = array.len(); let mut i = 0; let mut j = 0; let mut min = 0; let mut _tmp = 0; while i<len-1 { j = i+1; while j<len {

2021-11-25 16:44:11 133

原创 Rust 冒泡排序

//冒泡排序fn main() { let mut array = [2,8,10,4,748,23,96,584,12,0,999,1000]; let len = array.len(); let mut i = 0; let mut j = 0; let mut _tmp = 0; while i<len { j = i+1; while j<len { if array[i].

2021-11-25 13:58:52 131

原创 Android 使用RGB_565 生成Bitmap

Android 使用RGB_565 生成Bitmap

2021-11-25 12:03:03 2553

原创 解决Mobsf /Django 启动127.0.0.1:8000 页面无图问题

通过python manage.py runserver 启动服务后,发现在浏览器访问http://127.0.0.1:8000/,显示的界面图片无法显示查看cmd窗口报Django GET /static/index.css HTTP/1.1" 404根据提示只文件不存在解决方案,将Mobile-Security-Framework-MobSF-master\mobsf文件夹下static文件夹拷贝一份到MobSF文件即可重新启动服务后,http://127.0.0.1:8000/..

2021-03-23 12:28:09 806

圆形滚动刻度seekbar

android自定义圆形带刻度seekbar,环形刻度带回调

2015-09-18

精创51原理图

深圳精创51开发板原理图,里面详细的介绍了51开发板的原理,让你一看就会

2012-05-27

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除