这个库可以替换 flutter 默认的开屏 LOGO ,但是我不管用 1024x1024 还是 512x512 ,1242x2436 ,128x128
不是截断就会挤在一起,平台是安卓 12
flutter_native_splash: color: "#FFFEF7" # 启动画面中心图片 image: assets/logo.png # Android 12 android_12: image: assets/logo.png # 平台开关(仅为 Android 生成) android: true ios: false web: false
]]>Apple 的内购机制存在两个版本:StoreKit V1
和StoreKit V2
这两个版本对于我目前可知的影响是,用户购买之后代码中拿到的待验证收据信息的格式不同。如果是 V1 版本,则返回的是 base64 字符串,请求 server api ,获取到全部交易信息如果是 V2 版本,返回的是 JWT 格式(可以解析获取到原始 payload ,里面会有交易信息),请求 server api 获取到历史信息或本次交易信息;
关于请求后获取到的交易信息,V1 V2 也有不同:
V1 版本:调用 verify 接口,返回的交易信息是所有交易信息,包含所有时间段内的订阅、一次性购买信息
V2 版本:若调用inApps/v1/verifyTransaction
可获得本次的交易信息;若调用inApps/v2/history
(需要传入原始交易 id - originalTransactionId ),则根据这个原始 id 获得所有续订、升级、退订记录,另外这是一个分页接口,你可以传入 revision 游标参数来获取分页信息
此部分也有不同的解决方案:
大如淘宝( weex ),小如某个 app 都在使用 Hybrid
Hybrid 是确实加速了产品的发布,但是不能涵盖所有类型的 app ,比如:游戏
随着非游戏类 app 的越来越复杂,他们也开始迫切需要一个滑动流畅的 app 框架,切后台后不会假死的框架。 期间有些公司致力于编译优化 js ,例如:apicloud ,淘宝的 weex
而正如 facebook 当时遇到的,Hybrid 是成功的,但是性能一直是个问题,并且 W3C 一直以 B/S 的视角约束着 webview 的权限
只要在浏览器的框框内,我们不可能造出时速 100 码的轿子,我们需要改变思路,我们要内燃机汽车
Flutter 吸收 Hybrid 优点,来砸 Hybrid 的场子了, 他无意推翻 W3C 的法案,以 Hybrid 的思维(容器+统一化的脚本)为地基,拉升渲染能力,提升脚本权限。
Skia 引擎加持,非原生渲染,胜似原生的性能
Dart 脚本也不再和 js 一样成为解释性语言,而是编译为静态语言。
他们真的就是为爱发电?为 flutter 贡献代码是要签署协议的,即使 flutter 是开源的你贡献的代码也是由 Google 所有啊。
https://github.com/flutter/flutter/issues/142845#issuecomment-2435738214
]]>in_app_purchase
拿到PurchaseDetails
后,我把其中的serverVerificationData
传递给服务端,但是怎么也验证不成功。 我去看了 apple 开发文档,里面提到了两种验证方式 Deprecated
第一种方式,得到状态码一直是 21002 ,不清楚是 password 出了问题还是 recipt-data 出了问题(后者我就是拿 APP 获取到的 serverVerificationData 传递的)
第二种方式,chatGPT 告诉我需要通过以 JWT 的格式解析 serverVerificationData ,拿到 originalTransactionId ,但是当我在沙盒模式下多次购买一次性物品的时候,serverVerificationData 并不是一个 JWT 格式( GPT 给出的提示说需要通过 split(".")来获取三段信息,才是 JWT 格式)
如果有了解过流程的大佬,希望帮我指出问题所在,感恩!!
2/2
]]>应用并没有声明“QUERY_ALL_PACKAGES 权限”,是不是使用了 firebase_core ,firebase_analytics 导致的?应该如何解决!??
]]> java version "21.0.7" 2025-04-15 LTS Java(TM) SE Runtime Environment (build 21.0.7+8-LTS-245) Java HotSpot(TM) 64-Bit Server VM (build 21.0.7+8-LTS-245, mixed mode, sharing) Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel stable, 3.29.3, on Microsoft Windows [版本 10.0.19041.264], locale zh-CN) [√] Windows Version (10 专业版 64 位, 2004) [√] Android toolchain - develop for Android devices (Android SDK version 35.0.1) [√] Chrome - develop for the web [√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.8.3) [√] Android Studio (version 2024.3) [√] VS Code (version 1.99.3) [√] Connected device (3 available) [√] Network resources
FAILURE: Build failed with an exception. - What went wrong: Could not open cp_settings generic class cache for settings file 'C:\jk-katalon\workspace\XXXX\XXXX-app\android\settings.gradle' (C:\Users\cs.gradle\caches\8.0\scripts\8ju52g7d2hqvl85b219kdzjzv).
BUG! exception in phase 'semantic analysis' in source unit 'BuildScript' Unsupported class file major version 65
- Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
- Get more help at https://help.gradle.org
BUILD FAILED in 8s Running Gradle task 'assembleRelease'... 9.3s
┌─ Flutter Fix ───────────────────────────────────────────────────────────────────────────────────┐ │ [!] Your project's Gradle version is incompatible with the Java version that Flutter is using │ │ for Gradle. │ │ │ │ If you recently upgraded Android Studio, consult the migration guide at │ │ https://flutter.dev/to/java-gradle-incompatibility. │ │ │ │ Otherwise, to fix this issue, first, check the Java version used by Flutter by running
flutter │ │ doctor --verbose
. │ │ │ │ Then, update the Gradle version specified in │ │ C:\jk-katalon\workspace\XXXX\XXXX-app\android\gradle\wrapper\gradle-wrapper.properties to be │ │ compatible with that Java version. See the link below for more information on compatible │ │ Java/Gradle versions: │ │ https://docs.gradle.org/current/userguide/compatibility.html#java │ │ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────────┘
在学习 flutter ,这个问题困扰好久弄不处来。 选中状态突出:选中的标签(专项练习/考场模式)比未选中的要高一些,有凸起感,圆角。 未选中要低一点。如图,让 ai 帮助也弄不出来。
]]>上面是 AI 给我推荐的,想问问大佬们实际情况。
]]>有没有 flutter 开发者对这个比较了解的?
]]>岗位要求:
有研究过的兄弟吗 ?
]]>
一个问题就是 flutter 由于开始是为了移动平台准备得
虽然现在支持桌面端, 但很显然风格还是移动得
尤其不符合 windows 风格, 按钮都是圆角等等
而且感觉很难搞出比如像 vscode 这种标准得开发工具风格, 就是 各个控件要很紧凑, 小一点, 留最大空间给工作使用
有没有有经验得说说看, 我主要是想做出类似 vscode 风格
那个 reqable 风格也很好, 不知道他是用了啥框架还是都自己搞得, flutter 好像也不支持 菜单栏把, 他那个界面很紧凑, 塞了很多控件, 也不显得拥挤
]]>官方的 camera 插件,最新版,手机是小米 13 ,系统是澎湃 OS2.0 ,基于安卓 15
]]>忘记说问题了,预览画面旋转了-90 度
谢谢
]]>粗略看了一眼更新内容,感觉还是 Flex 这个最能提升开发体验,等了这么多年
]]>因为 flutter.dev 的官方文档有指向 flutter.cn,一直以为都是谷歌官方在运作. 然后无聊刷到 flutter.cn 的工信部备案号, 想看看是不是 谷歌中国建设的, 结果发现是一家国内外包公司所有,这家公司还持有 dart.cn 相关域名的网站.
根据更多信息显示, flutter.cn 是由 CFUG (China Flutter User Group) 社区发起建立的, 但在 CFUG 的简介和感谢名单里, 却没有看到这家国内公司的名称.
不知道域名是租用还是捐赠呢.
]]>替换 Router 实现,比如 AutoRoute 不太现实,有太多页面了,测试工作量很大。
GoRouter 本身只支持push
, pushReplacement
, go
, replace
, pop
。
RouteMatchList _updateRouteMatchList( RouteMatchList newMatchList, { required RouteMatchList? baseRouteMatchList, required Completer<Object?>? completer, required NavigatingType type, }) { switch (type) { case NavigatingType.push: return baseRouteMatchList!.push( ImperativeRouteMatch( pageKey: _getUniqueValueKey(), completer: completer!, matches: newMatchList, ), ); case NavigatingType.pushReplacement: final RouteMatch routeMatch = baseRouteMatchList!.last; return baseRouteMatchList.remove(routeMatch).push( ImperativeRouteMatch( pageKey: _getUniqueValueKey(), completer: completer!, matches: newMatchList, ), ); case NavigatingType.replace: final RouteMatch routeMatch = baseRouteMatchList!.last; return baseRouteMatchList.remove(routeMatch).push( ImperativeRouteMatch( pageKey: routeMatch.pageKey, completer: completer!, matches: newMatchList, ), ); case NavigatingType.go: return newMatchList; case NavigatingType.restore: // Still need to consider redirection. return baseRouteMatchList!.uri.toString() != newMatchList.uri.toString() ? newMatchList : baseRouteMatchList; } }
]]>多年来,Flutter 吸引了数百万开发者,他们使用 Flutter 在各个平台上构建用户界面。Flutter 最初是一个面向移动端的 UI 工具包,仅支持 iOS 和 Android 。随后,Flutter 增加了对 Web 的支持。最终,Flutter 扩展至 Mac 、Windows 和 Linux 。在这一庞大的扩展过程中,Flutter 团队的规模仅略有增加。为了扩展 Flutter 的人力资源并加速开发,我们创建了一个 Flutter 的分支,称为 Flock 。
让我们通过一些简单的估算来理解 Flutter 团队的人力短缺问题。
如今全球大约有多少 Flutter 开发者?我的猜测是大约有 1,000,000 名开发者。实际数字可能更高,但一百万应该是一个相对保守的估计。
目前 Flutter 团队的规模有多大? Google 并未公布这一信息,但我的猜测是该团队大约有 50 人。
这意味着 50 人服务 1,000,000 名开发者的需求。简单计算一下,每位 Flutter 团队成员需要满足约 20,000 名开发者的需求!这个比例显然对于任何形式的客户支持来说都是不可行的。
人力短缺通常可以通过招聘来解决。然而,由于 Google 内部问题,Flutter 团队的人员编制在 2023 年左右被冻结,随后在 2024 年初传出少量裁员的消息。尽管团队可能会通过外包进行扩展,但短期内我们不太可能看到 Flutter 团队的规模翻倍或四倍增长。
更糟糕的是,由于 Google 在公司层面重新聚焦于 AI ,Flutter 团队将所有桌面平台的优先级降低。截至目前,Flutter 团队的 6 个支持平台中有 3 个处于维护模式。桌面端可能是 Flutter 尚未充分挖掘的最大潜力所在,但目前它几乎处于停滞状态。
]]>如果是独立开发者呢? 使用 Flutter Flow 是不是性价比最高的?
]]>这是一个需求开发过程中常见的场景,造一个轮子,方便大家使用。有帮助到的话麻烦点个赞和 star 谢谢!也欢迎各种意见和建议
]]>4.现在搞了鸿蒙终于把 hap 包打出来了,鸿蒙 next 系统还不给我推送,我还没的跑。然后我就想试试 android 能不能跑,发现 android 跑不了了!!!!毁灭吧。 大家别用,此坑很深,爬不起来
]]>flutter 啥也没有
]]>ffmpeg -hide_banner -y -i image.AVIF -i watermark.png -filter_complex "overlay=(main_w-overlay_w-50):(main_h-overlay_h-50)" output.AVIF
命令行中运行几乎秒完成,但在 Flutter 中几乎要半分钟。
await Process.run('ffmpeg', [ '-hide_banner', '-y', '-i', 'image.AVIF', '-i', 'watermark.png', '-filter_complex', 'overlay=(main_w-overlay_w-50):(main_h-overlay_h-50)', 'output.AVIF', ]);
整了一天了,完全没有头绪,求教,求教
]]>技术栈 Flutter+Drift+Riverpod ,有表todoRecord
和user
,现在需要查询出待办记录最多的五位用户,使用图表展示,并能够支持自动刷新。
todoRecord
表,定位到userId
出现次数最多的五条userId
;user
表拿到用户信息如姓名;因为需要实现自动刷新,那么使用到了 Drift 的 watch()函数返回 Stream 。
StreamBuilder<List<TodoRecordData>>
嵌套StreamBuilder<List<UserData>>
;StreamBuilder<List<(UserData, int)>>
构建。 Test().change(); Test(); } class Test { factory Test() => Test.print(); var a = 1; change() { a = 2; print('change$a'); } Test.print() { print('print$a'); } }
为什么会出现这样的结果
print1 change2 print1
最好能详细讲解一下,或者给出相关关键词,我自己去查资料
]]>