首页
苏兮影视
随笔记
壁纸
更多
直播
时光轴
友联
关于
统计
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的小细节,setState()
setState 只能更新当前widget的状态,当前widget下面还有别的widget情况下,是不会生效子widgetList<String> items = List.generate(10, (index) => "item$index"); class ChatList extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: [ Expanded( child: ListView.builder( itemCount: items.length, itemBuilder: (context, index) { return ChatItem(chat: items[index]); }, ) )]); } } class HomePage extends StatelessWidget { const HomePage({super.key}); @override Widget build(BuildContext context) { return ChatList(); } void changeChatList(){ setState(){ items.add("new data") } } }这样在Hone Page调用chagngeChatList方法,ChatList中的视图没有变化,可以将items移动到HomePage,并将值通过构造传入,这种做法可以给变量提权修改后 class ChatList extends StatelessWidget { final List<String> items; const ChatList({this.items}) @override Widget build(BuildContext context) { return Column( children: [ Expanded( child: ListView.builder( itemCount: items.length, itemBuilder: (context, index) { return ChatItem(chat: items[index]); }, ) )]); } } class HomePage extends StatelessWidget { List<String> items = List.generate(10, (index) => "item$index"); const HomePage({super.key}); @override Widget build(BuildContext context) { return ChatList(items); } void changeChatList(){ setState(){ items.add("new data") } } }
2024年04月17日
190 阅读
0 评论
1 点赞
2024-04-12
flutter开发桌面应用
flutter开发windows桌面应用的基础需要用到一款插件:bitsdojo_window在 pub.dev 官网搜索然后导入依赖,在pubspec.yaml文件引入依赖dependencies: bitsdojo_window: ^0.1.6在main函数中进行初始化 // 简单处理原生跟flutter通信 WidgetsFlutterBinding.ensureInitialized(); appWindow.size = const Size(600, 450); runApp(const MyApp()); appWindow.show(); doWhenWindowReady(() { final win = appWindow; const initialSize = Size(600, 450); //初始化 win.minSize = initialSize; // 设置软件最小窗口大小 win.size = initialSize; // 默认的窗口大小 win.alignment = Alignment.center; // 窗口的位置 win.title = "Custom window with Flutter"; // 窗口标题 win.show(); // 展示 });这个时候运行会发现顶部还有系统默认的关闭/最大化/最小化样式。我们一般情况下都是自定义的,可以在windows\runner\main.cpp添加以下代码取消掉#include <bitsdojo_window_windows/bitsdojo_window_plugin.h> auto bdw = bitsdojo_window_configure(BDW_CUSTOM_FRAME | BDW_HIDE_ON_STARTUP);现在运行会发现系统默认样式已经没有了,但是窗口是不能拖动的,可以通过bitsdojo_window插件提供的WindowTitleBarBox(child: MoveWindow(),)组件来设置可以拖动的位置现在标题栏可以拖动了,开始自定义最大化/最小化/关闭按钮bitsdojo_window插件已经给我们提供好了对应的组件Row( children: [ MouseRegion( cursor: SystemMouseCursors.click, child: MinimizeWindowButton(), ), MaximizeWindowButton(), CloseWindowButton() ], );
2024年04月12日
253 阅读
0 评论
2 点赞
1
2
3