Flutter:键值对、文件缓存、数据库等常用插件总结

shared_preferences

用于简单的键值对缓存,通常用于存储基本的信息。在iOS是基于NSUserDefaults实现,在Android基于SharedPreferences实现。

_incrementCounter() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  int counter = (prefs.getInt('counter') ?? 0) + 1;
  print('Pressed $counter times.');
  await prefs.setInt('counter', counter);
}

path_provider

用于获取不同平台文件系统的存储路径,在Android 和 iOS是有不同的实现方式。

Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;

Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
方法 iOS 实现 Android 实现
getTemporaryDirectory NSCachesDirectory getCacheDir
getApplicationDocumentsDirectory NSApplicationSupportDirectory getFilesDir
getExternalStorageDirectory 不支持 getExternalFilesDir(null)

sqflite

在 Android是存储在getDatabasesPath()路径,在iOS存储在 documents。

var db = await openDatabase('my_db.db');

toast

参考Android的Toast的效果。

Toast.show("Toast plugin app", context, duration: Toast.LENGTH_SHORT, gravity:  Toast.BOTTOM);

webview_flutter

浏览器,在iOS基于WKWebView实现,在Android基于WebView实现。

image_picker

图片选择器

multi_image_picker

多图选择器

logger

日志系统

video_player

视频播放器,在 iOS 是基于 AVPlayer 实现,在 Android, 基于 ExoPlayer 实现。

json_serializable

用于实现从 json 和对象之间的转换。

retrofit

retrofit 风格的网络请求框架