在使用mac的时候,偶尔会出现触摸板3指以上的功能失效,这个太影响使用了,毕竟mac最有用的功能,我感觉就是窗口切换。。。触摸板在外接键盘后,这就是我唯一的功能了,如果他也失效,那实在令人痛苦
膘叔的简单人生
在使用mac的时候,偶尔会出现触摸板3指以上的功能失效,这个太影响使用了,毕竟mac最有用的功能,我感觉就是窗口切换。。。触摸板在外接键盘后,这就是我唯一的功能了,如果他也失效,那实在令人痛苦
在开发flutter的macOS版时,报这个错误:./macos/Pods/Pods.xcodeproj: warning: The macOS deployment target 'MACOSX_DEPLOYMENT_TARGET' is set to 10.6, but the range of supported deployment target versions is 10.9 to 12.3.99.
可以很明确的看到文件是:/macos/Pods/Pods.xcodeproj,虽然这个warning并不影响程序的运行,看确实看了不舒服,于是打开/macos/Pods/Pods.xcodeproj,搜索:MACOSX_DEPLOYMENT_TARGET,一共有3处,将他对应的值10.6,修改为10.9,问题解决。
在Windows和MacOs上面程序的宽高是可以随便拖拉的,不象ios/android,总归是一定固定的宽高。为了保证部分输入框或者界面在拖拉时不会UI越界,所以就要设定一个最小宽高。当然你要为了保险,你可以 强制设定最小值和最大值一致,也就是让APPi窗口固定大小。但一般我们都只是限定最小值。。。毕竟,最大的话,丑就丑了(反正我没有UI设计师)
基于此,官方的flutter-desktop--embedding有一个插件:window_size,由于他没有发布到pub.dev,因此只能通过手动改pubspec.yml方法来进行加载
修改:pubspec.yml,在dependencies下增加:
window_size:
git:
url: https://github.com/google/flutter-desktop-embedding.git
path: plugins/window_size
ref: a738913c8ce2c9f47515382d40827e794a334274
ref的话,可以直接去github上看,用最新的即可。
然后可以在runApp前进行判断,最简单的办法就是2行代码:
if(Platform.isMacOS || Platform.isWindows) {
if( MediaQueryData.fromWindow(window).size.width < 640 || MediaQueryData.fromWindow(window).size.height < 480){
window_size.setWindowSize(const Size(640,480))
}
}
当然实际情况得从自身出发,不能这样随意。。
参考:
1、flutter桌面版开发设置窗口大小(最小尺寸、最大尺寸、固定尺寸),窗口标题。 | 码海无涯 (yefei572.github.io)
2、flutter-desktop-embedding/README.md at master · google/flutter-desktop-embedding (github.com)
后续就要看看这个什么时候更新了:flutter-desktop-embedding/plugins/menubar at master · google/flutter-desktop-embedding (github.com),这个一更新。menubar就可以派用场了。
---EOF
后记:目前还没有判断窗口resize的事件,理论上应该要判断这个。后面会尝试加上
用flutter开发后要打包时,需要对项目目录进行微调
storePassword=123456
keyPassword=123456
keyAlias=testalias
storeFile=/Users/gouki/test.keystore
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
在学习flutter的过程中,遇到了几个对我来说难度有点大的问题,比如swiper、弹出菜单(含子菜单)等。所幸都一一实现了。
出现标题的错误的原因,极大的可能是,页面中有多个ScrollView的组件,如:ListView,SingleChildScrollView,CustomScrollView,有同样的滚动方向,但是又没有ScrollController。
这时候只要在除了第一个出现的scrollview外的scrollview中,加入:primary:false,即可
我在遇到这个问题的情况就是:
1、页面中有弹出菜单和子菜单,高度超过了1屏
2、点击子菜单出现详情的时候,也需要滚屏(部分内容)
因此,相当于一个页面出现了3个ScrollView,在没有加primary:false前,只要子菜单一弹出,就开始报错。在子菜单中加入:primary:false后,不再出错,但点击子菜单显示详情的时候,又出现了这个错误。
将子菜单和详情对应的scrollview中都加入primary:false后,问题 解决。
在使用flutter的http库请求API时,发现返回的数据均为乱码,例如这样:䏿µ·å¸é¿å®åºé¿å®è·¯1189å·æ¥ç¦å£«å¹¿åºä¸åº401-402
原来使用的是:json.decode(response.body),看来不能直接对字符串进行处理。所以还是安稳的改用:json.decode(utf8.decode(response.bodyBytes))
至此问题解决。
如题。实在买不到酒喝了,,把20年买的这两瓶酒也干掉了。心碎
Flutter默认的APP是直接包含状态栏的,当然如果你使用Scaffold,并且设置了appBar,那就不用纠结,他能够管理沉浸式的顶部。