0

我有一个要求,我想将 JSON 请求数据(从数据库表中获取)上传到服务器并获取响应,基于响应我必须更新本地数据库(sqflite: ^1.2.1)。我有多个屏幕,我需要根据用户操作在每个屏幕上创建不同的 JSON 请求数据。目前对于相同的场景,我在我的另一个原生 android 应用程序中使用 Intent Service。在 Flutter Android 应用程序中处理此类场景的基本方法是什么。如果我使用通道并实现 Intent 服务,则无法访问 Android 特定区域中的 sqflite 数据库。如果互联网不可用,那么我必须继续等待连接,当设备连接时,我需要将所有创建的事件一一上传到服务器。

请有人告诉我在Flutter中处理这种特定场景的可能方法。

提前致谢

4

2 回答 2

0

我得到了解决方案:我能够通过渠道以本机方式访问 SQFlite 数据库。

这是flutter创建的数据库的路径

   "/data/data/{package name}/app_flutter/{database file name}"

所以我们可以像原生一样使用通道访问

  SQLiteDatabase mDatabase= SQLiteDatabase.openDatabase("/data/data/{package name}/app_flutter/{database file name}", null, 0);

  Log.i("MainActivity", "mDatabase.isOpen():"+mDatabase.isOpen());//check DB is open or not
  String query = "SELECT * FROM {Table Name}";
  Cursor cursor=mDatabase.rawQuery(query,null);
  if (cursor.moveToFirst()){
    do{
       String data= cursor.getString(cursor.getColumnIndex({Table Column Name}));
       Log.i("MainActivity", "Column Data Value:"+data);
    }while(cursor.moveToNext());
  }
  cursor.close();

所以我会在本机中实现Service来实现这个场景。谢谢你

于 2021-01-06T05:39:42.970 回答
0

例如,首先使用 sqflite 或 sharedPreferences 在本地保存您的 JSON 请求。将它们同步到您的服务后,将它们从同步队列中删除

于 2020-12-28T12:09:04.333 回答