小编Fab*_*bio的帖子

Flutter:从 FirebaseMessaging 的 onBackgroundMessage 方法访问 SharedPreferences

在我的 Flutter 应用程序中,我想将从 Firebase 数据消息接收的数据保存到 SharedPreferences。我的 FirebaseMessaging 对象配置如下:

_firebaseMessaging.configure(
        onMessage: (Map<String, dynamic> message) {
          // this works fine
          print("onMessage: ");
        },
        onLaunch: (Map<String, dynamic> data) {
          print("onLaunch: ");
        },
        onResume: (Map<String, dynamic> data) {
          print("onResume: ");
        },
        onBackgroundMessage: myBackgroundMessageHandler,
      );
Run Code Online (Sandbox Code Playgroud)

这是顶级 myBackgroundMessageHandler 方法:

Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) {
    // This doesn't work
    print("background message"); // this isn't even printed!
    SharedPreferences.getInstance().then(...) // here I have to save some data
  }
Run Code Online (Sandbox Code Playgroud)

问题是 myBackgroundMessageHandler 似乎根本没有被调用。然而,通知是通过电话收到的。我还尝试从消息中删除通知字段,在这种情况下,调用了 myBackgroundMessageHandler 但通知未到达。有没有办法既接收通知又触发方法?

push-notification sharedpreferences firebase flutter firebase-cloud-messaging

6
推荐指数
0
解决办法
478
查看次数

Flutter中将Row分成相等的两半

我在卡片中有一个行小部件,我想将行完美地划分为卡片宽度的一半,并在每一半中放置一些居中的文本。因此,必须固定行的一半间距,并且每个文本必须在其所在的一半位置居中。这是一个例子:

在此输入图像描述

有任何想法吗?

layout widget flutter flutter-layout flutter-row

6
推荐指数
1
解决办法
1万
查看次数

将 Cloud Function 部署到不同的 Firebase 项目

我有两个 Firebase 项目,一个用于开发 (project-dev),一个用于生产 (project-prod)。

我初始化了 firebase CLI,用于编写和部署链接到项目产品的云功能。然后我运行firebase use --add并添加了project-dev,以便我可以将相同的功能部署到两个项目;我不想将同一个函数重写两次。

此时,我就遇到了问题。在函数中,我必须向实时数据库写入一些内容,但是当我将函数部署到project-dev 时,它会写入project-prod 的数据库。

我想要实现的是该函数必须引用它部署到的项目的数据库。这样我就有一个函数,当它部署到project-dev时,它会写入project-dev的数据库,当它部署到project-prod时,它会写入project-prod的数据库。

有可能实现吗?如果不行的话,该走什么路呢?

编辑

功能代码:

exports.AddOrders= functions.https.onRequest(async (req, res) => {
    async function addOrder(key, value) {
        var ref = app.database().ref("/orders");
        return ref.child(key).set(value);
    }

    var orders = req.body['orders'];
    var promises = [];
    for (var key in orders) {
        promises.push(addOrder(key, orders[key]));
    }
    Promise.all(promises).then(
        _ => {
            res.sendStatus(200);
            return null;
        }
    ).catch(err => {
        res.send(err);
    })
});
Run Code Online (Sandbox Code Playgroud)

(这个函数工作正常,问题是它写入了错误的数据库)

environment firebase firebase-realtime-database google-cloud-functions

3
推荐指数
1
解决办法
1694
查看次数

Flutter:如何在用户移动时获得精确的速度和行进距离?

我正在尝试构建一种健身应用程序。我想知道用户速度,还想显示用户行驶的距离。我已经知道如何使用 Geolocator 包获取它,但数据不够精确,事实上,即使用户不移动(并且行进距离增加),我也会收到位置更新。我想知道是否有更好的解决方案。其他健身应用如何做到如此精准?

geolocation flutter

1
推荐指数
1
解决办法
314
查看次数

Supabase 连接和嵌套选择

假设我有 3 张表:

  • 表1(id,列1,列2)
  • 表2(id,col3,col4)
  • 表3(表1_id表2_id

我想要做的是将 Table1 和 Table2 连接起来,然后选择具有特定列值的行(例如 col4 == "123")

我尝试过的:

supabase.from("Table3").select(
 '''
  Table1 (
   col1,
   col2
  ),
  Table2 (
   col3,
   col4
  ),
 '''
).eq("Table2.col4", "123").execute();
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,对于与查询匹配的行,它返回具有 Table1 和 Table2 属性的正确对象,但对于与查询不匹配的行(因此不应返回),它返回具有 Table1 属性和 Table2 的对象属性设置为 null。

上述查询的示例:

表 1 |id | 第 1 列 | 列2| |---|------|-----| |1 | 值1 | 值2| |2 | 值3 | 值4|

表2 |id | 第 3 栏 | 第 4 栏 | …

dart flutter supabase supabase-database

1
推荐指数
1
解决办法
3959
查看次数