SharedPreferences 和数据库:在本机代码中还是在 Flutter 中?
Posted
技术标签:
【中文标题】SharedPreferences 和数据库:在本机代码中还是在 Flutter 中?【英文标题】:SharedPreferences and database: in native code or in Flutter? 【发布时间】:2021-04-26 00:51:15 【问题描述】:我目前正在将原生 android 音乐应用迁移到 Flutter。此应用依赖于:
共享首选项 一个 SQLite 数据库,目前有 7 个表(我在本机应用程序上使用 Room) 玩家所在的Service
我尝试将尽可能多的代码从原生代码迁移到 Flutter,因为该应用也将在 ios 上可用。
也就是说,Service
部分(及其 iOS 等效项)将使用本机代码编写,因为据我所知,Flutter 中没有等效项。此外,音频播放器已经编写好了(我不会使用另一个),因为它是用于非常特定的用途(它是使用 OpenSL ES 用 C++ 编写的)
该应用在Service
内部和 大量使用 SharedPreferences 和数据库。
所以我的问题是:由于应用程序的一部分仍将使用本机代码编写,因此需要操作 SharedPreferences 和数据库中的数据,最好的方法是:我应该创建和操作 SharedPreferences 吗?数据库使用原生代码(Android 和 iOS),还是使用 Flutter?
如果我使用本机代码执行此操作,我将无法利用流(如果我错了,请纠正我) 如果我使用 Flutter 执行此操作,我将不得不从我的本机代码中调用 Dart 代码来请求数据库,我不确定这是一个好习惯...谢谢。
【问题讨论】:
【参考方案1】:在您的情况下,您根本不需要任何本机代码。
你可以使用 dart/flutter 包。
要使用 shared Preference,您可以将包添加到您的应用程序中,无需任何其他配置即可在 android 和 IOS 上运行
链接:
https://pub.dev/packages/shared_preferences
DB 部分有多种选择 如果你想要一个 SQL DB,你可以使用 sqflite(不如 ROOM 聪明,但它可以胜任)。
链接:
https://pub.dev/packages/sqflite
如果你想切换到 Nosql DB,我会推荐 Hive: 看看这里:
https://pub.dev/packages/hive
最后,服务取决于您的需求和应用程序的复杂性,但对于音乐应用程序,我认为 audiopLayers 包可以做到: 看这里:
https://pub.dev/packages/audioplayers
请注意: 有些包可能需要一些配置才能工作,比如编辑 androidManifest.xml 或 info.plist 。
【讨论】:
感谢您的帮助,但它没有回答我的问题:我需要Service
,因为我有自己的音频播放器实现,它是使用 OpenSL ES 用 C++ 编写的。那么在这种情况下,最好的选择是什么?以上是关于SharedPreferences 和数据库:在本机代码中还是在 Flutter 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SharedPreferences 系统地存储和获取数据?
Android使用SharedPreferences保存账号密码