Skip to content

Latest commit

 

History

History
86 lines (72 loc) · 2.61 KB

README.md

File metadata and controls

86 lines (72 loc) · 2.61 KB

e_commerce_app

去年做了几个Flutter应用,同一套代码fork了几个分支(如下截图是最新的一个分支实现),花点时间整理一个简单的APP工程模版:

  1. 最小依赖原则
  2. 之前只面向移动端,这次代码整理主要适配web
  3. 只把涉及到的且常用的功能摘出来,尽量简化实现,方便后面项目复用

home

shop

warehouse

mine

detail

select

checkout

open box record

功能:

  1. 国际化
  2. 自定义字体
  3. 首页
    • 轮播图
  4. Google登录

依赖组件:

必选

  1. intl 国际化
  2. dio 网络交互
  3. shared_preferences 本地存储
  4. injectable 依赖注入
  5. logger 日志
  6. card_swiper 轮播图
  7. google_sign_in 谷歌登录
  8. firebase_analytics firebase分析
  9. fluttertoast toast
  10. font_awesome_flutter FontAwesome(MaterialIcons带的icon比较少)

可选

  1. shimmer 骨架加载动画
  2. cached_network_image 图片缓存( Web不可用 )

Mock API

flutter run -d chrome --web-browser-flag "--disable-web-security" 

组件配置

  • injectable

依赖注入,定义di.dart文件

@InjectableInit()
Future<void> configureDependencies() async => await GetIt.instance.init();

添加injectable_generator插件,可以自动生成di.config.dart文件

flutter pub add dev:injectable_generator

在main.dart初始化

Future<void> main() async {
  await configureDependencies();
  runApp(const MainApp());
}

以SharedPreferences为例,全局注入SharedPreferences实例,避免非async方法里使用时await问题。

@module
abstract class SharedPreferenceService {
  @preResolve
  Future<SharedPreferences> get prefs => SharedPreferences.getInstance();
}