数独
使用的技术和三方库
intl
实现国际化hive
本地存储数据lottie
实现json动画播放audioplayers
实现按键声音的播放in_app_purchase
实现ios app内购google_mobile_ads
实现奖励广告的显示sudoku_solver_generator
实现数独谜题的生成scoped_model
实现监听数据变化,更新相关界面的widget
sprintf
实现dart中的格式化字符串功能DynamicTheme
实现主题颜色的动态设置- 动画实现
- 图标动画
- 加载
json
动画实现 - 直接使用
AnimatedIcon
- 加载
SlideTransition
实现游戏填数完成时cell
的位移动画PageTransitionSwitcher
实现草稿键盘切换显示的渐变动画
- 图标动画
- 通过
GridView
和cell
的border
计算实现数独界面的表格样式 - 自定义封装
Sudoku
widget
In App Purchase
AppStore中填写好付款信息,编辑好内购的项目,内购项目分为四类
- 消耗 (服务端不保存购买状态,需要开发者自己保存)
- 非消耗(只能购买一次,重复购买会返回失败,可以通过api查询出来购买状态)
- 自动订阅
- 不自动订阅
参考:https://developer.apple.com/in-app-purchase/
客户端测试(有两种方法)
注意
- StoreKit必须使用Xcode启动App,但这个必须在iOS 14后才支持。
- 沙盒账号必须在真机上测试,
国际化
主题
通过主题管理Button
样式
总结
MaterialButton
弃用了。- 使用
TextButton
,ElevatedButton
,OutlinedButton
替换原来的FlatButton
,RaisedButton
,OutlineButton
。 - 使用
ButtonStyle
来定义按键的样式,可以通过TextButton.styleFrom()
来创建ButtonStyle
。
定义单个按钮的样式
TextButton( |
通过主题定义按钮样式
MaterialApp( |
动画框架
动画设计:Material motion system
- Container transform
- Shared axis
- Fade through
- Fade
对应实现:Flutter animation package
- Container transform
- Shared axis transition
- Fade through transition
- Fade transition
知识点
- Containers with no children try to be as big as possible
- GridView高度不能wrap_content,GridView在Column中高度会莫名其妙的多处一点,只有把它放在ListView中就好了。
- ListView默认会多出一个间隔Unexpected top padding in ListView put inside scaffold with no appBar
return MediaQuery.removePadding( |