flutter-github-app

194 阅读1分钟

学习Flutter 的小demo,按照flutter 中文网的教程自己写了一遍,主要功能包括登录退出,导航切换,首页数据请求,下来刷新和上拉加载更多,主题切换,语言切换,状态管理用的是 Provider,json 解析用的是 json_serializable, 缓存用的是 shared_preferences,网络请求用的是dio 自己稍微封装了下,国际化用的是 Intl, Android Studio 有插件

主要的第三方库:

name: flutter_github_app
description: A new Flutter application.

version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter

  cupertino_icons: ^0.1.3
  cached_network_image: ^2.2.0+1
  flutter_swiper : ^1.1.6
  dio: ^3.0.9
  flutter_easyrefresh: ^2.1.1
  fluttertoast: ^4.0.1
  modal_progress_hud: ^0.1.3
  webview_flutter: ^0.3.21
  provider: ^4.1.1
  shared_preferences: ^0.5.7+1
  json_annotation: ^3.0.1

dev_dependencies:
  flutter_test:
    sdk: flutter

  build_runner: ^1.0.0
  json_serializable: ^3.2.0

flutter:
  uses-material-design: true
  assets:
    - images/avatar_placeholder@2x.png
    - images/avatar_placeholder@3x.png
    - images/avatar-default.png

  fonts:
    - family: myIcon
      fonts:
        - asset: fonts/iconfont.ttf

flutter_intl:
  enabled: true

问题:

  • 页面保活问题:

需要实现 AutomaticKeepAliveClientMixin 协议,重写 wantKeepAlive 返回true

  • provider listen false

要将 listen 设为 false Provider.of<ThemeState>(context,listen: false)

  • 像用户退出登录跳转登录页,这时需要将导航栈的元素都删除,然后再跳转登录页可以用 Navigator.pushAndRemoveUntil 方法

参考链接: