0%

app_sudoku

数独

使用的技术和三方库

  • 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实现草稿键盘切换显示的渐变动画
  • 通过GridViewcellborder计算实现数独界面的表格样式
  • 自定义封装Sudoku widget

In App Purchase

AppStore中填写好付款信息,编辑好内购的项目,内购项目分为四类

  • 消耗 (服务端不保存购买状态,需要开发者自己保存)
  • 非消耗(只能购买一次,重复购买会返回失败,可以通过api查询出来购买状态)
  • 自动订阅
  • 不自动订阅

参考:https://developer.apple.com/in-app-purchase/

客户端测试(有两种方法)

  1. 第一种使用AppStore的沙盒账号进行测试
  2. 第二种使用StoreKit进行测试

注意

  • StoreKit必须使用Xcode启动App,但这个必须在iOS 14后才支持。
  • 沙盒账号必须在真机上测试,

国际化

主题

通过主题管理Button样式

总结

  • MaterialButton 弃用了。
  • 使用TextButton,ElevatedButton,OutlinedButton替换原来的FlatButton,RaisedButton,OutlineButton
  • 使用ButtonStyle来定义按键的样式,可以通过TextButton.styleFrom()来创建ButtonStyle

定义单个按钮的样式

TextButton(
style: TextButton.styleFrom(primary: Colors.green),
)

通过主题定义按钮样式

MaterialApp(
theme: ThemeData(
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(primary: Colors.green),
),
),
home: MyAppHome(),
)

动画框架

动画设计:Material motion system

  • Container transform
  • Shared axis
  • Fade through
  • Fade

对应实现:Flutter animation package

  • Container transform
  • Shared axis transition
  • Fade through transition
  • Fade transition

知识点

return MediaQuery.removePadding(
context: context,
removeTop: true,
child: ListView.builder(
.......
)