首页
苏兮影视
随笔记
壁纸
更多
直播
时光轴
友联
关于
统计
Search
1
v2ray节点搭建
1,074 阅读
2
软件添加id功能按钮
1,029 阅读
3
QQ扫码无法登录的解决方案
990 阅读
4
网易云音乐歌单ID获取教程
921 阅读
5
js逆向xhs
792 阅读
谈天说地
建站源码
经验教程
资源分享
动漫美图
登录
Search
标签搜索
java
rust
flutter
esp32c3
springboot
安卓
linux
vue
dart
设计模式
docker
ssh
joe
快捷键
git
fish shell
maven
redis
netty
groovy
尽意
累计撰写
116
篇文章
累计收到
41
条评论
首页
栏目
谈天说地
建站源码
经验教程
资源分享
动漫美图
页面
苏兮影视
随笔记
壁纸
直播
时光轴
友联
关于
统计
搜索到
12
篇与
的结果
flutter开发桌面应用实现窗体透明
2024年09月21日
338 阅读
0 评论
1 点赞
2024-09-21
1.使用bitsdojo_window插件:使用命令添加dart pub add bitsdojo_window2.在 windows/runner/main.cpp 中进行窗口透明设置:#include <flutter/dart_project.h> #include <flutter/flutter_view_controller.h> #include <windows.h> #include "flutter_window.h" #include "utils.h" // 添加的代码 #include<bitsdojo_window_windows/bitsdojo_window_plugin.h> auto bdw = bitsdojo_window_configure(BDW_CUSTOM_FRAME | BDW_HIDE_ON_STARTUP); void EnableTransparency(HWND hwnd) { SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED); COLORREF colorKey = RGB(255, 255, 255); BYTE alpha = 128; // 设置透明度(0-256) SetLayeredWindowAttributes(hwnd, colorKey, alpha, LWA_ALPHA); } // 到这里结束 int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, _In_ wchar_t *command_line, _In_ int show_command) { // Attach to console when present (e.g., 'flutter run') or create a // new console when running with a debugger. //...省略中间的代码 // 添加的代码 EnableTransparency(window.GetHandle()); // 到这里结束 window.SetQuitOnClose(true); ::MSG msg; while (::GetMessage(&msg, nullptr, 0, 0)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } ::CoUninitialize(); return EXIT_SUCCESS; } 3.设置页面背景为透明:Scaffold( backgroundColor: Colors.transparent, body: Container() )4.实现的效果:
2024-05-17
记录一下flutter的值传递细节
最近在实现一个类似qq相册的功能,点击右上角图片的小圆圈框选。思路也很简单,当image控件的值发送改变时,重新rebuild渲染,当然是局部渲染,所以要封装这么一个控件,构造函数: final File file; final BottomImageChanged isChanged; final VoidCallback onPress; 图片显示使用的FileImage,传递一个回调函数,用来处理区选对应的widget,由于dart的传参对于基本变量都是值传递吗,所以也就造成了父控件值改变了,但是子组件不能监听到,所以使用类包装一下基础变量值,提供get set方法。也可以使用ValueNotifier包装基础变量,List.filled 和 List.generate 都是用于创建固定长度的列表List.filled:列表中的所有元素都是相同的对象,适用于需要多个相同对象引用的情况。List.generate:每个元素都是独立的对象,适用于需要为每个列表项创建不同对象的情况,例如为每个列表项创建独立的 ValueNotifier。
2024年05月17日
158 阅读
0 评论
0 点赞
flutter 卡在 "Running Gradle task..."
每次启用新的flutter插件都会卡一阵子,网上的说法也都是换maven下载源,即使是换了也还是会卡住。解决方案:在终端中打开flutter项目目录,cd到android目录下,使用gradlew clean清理一下,清理完成后重新build即可。
2024年05月11日
192 阅读
0 评论
1 点赞
2024-05-02
flutter实现封装控制器
在flutter中,尽管已经可以通过状态提升实现小部分的值传递,用回调函数的方法去修改父类的值,在父类调用setstate相当于重新rebuild了父类以及子组件的全部组件,而我们只需要看到子组件的内容发送改变,对此性能上无疑是浪费的。所以需要对组件进行封装,使每次更新只涉及到需要的子组件,这也是性能优化以及解耦的一种解决方案。新建一个controller类继承ChangeNotifier私有化成员变量,设置get set方法,set数据的时候调用notifyListeners函数,通知框架需要更新到新的数据通过ListenableBuilder组件监听需要更新的ChangeNotifier对象每次数据更新使调用set方法都会调用notifyListeners函数,在listenable又会监听到数据的改变,从而进行重绘。
2024年05月02日
180 阅读
0 评论
2 点赞
flutter的状态提升
2024年05月02日
249 阅读
0 评论
0 点赞
2024-05-02
在flutter中,在父组件中修改子组件的内容一般使用状态提升,也就是将子组件需要的变量在父组件的state函数中声明,通过构造函数传参到子组件可以看到这样就可以在父组件中点击按钮改变子组件的值。通过状态提升已经可以解决父组件修改子组件的问题了,那么在子组件怎么修改父组件的值呢?有一种思路是通过函数回调来实现:在dart中函数跟变量等价,允许将函数作为参数来回传递。现在就实现了子组件访问和修改父组件的变量
1
2
3