在 Jetpack Compose 不可组合函数中获取上下文

Gre*_*šek 6 android kotlin firebase firebase-realtime-database android-jetpack-compose

我想将一些数据插入 Firebase 中。为此,我有一个不可组合的函数,在该函数中,我想调用 Toast.makeText 。。在 .addOnSuccessListener 部分。但是,我无法获取 Toast.makeText 语句中应包含的上下文

fun saveActivityToFB(
    answer: String,
    question: String,
    id: String
) {

    var db: DatabaseReference = Firebase.database.reference
    val ques = Question(answer, question)

    db.child("activity").child("test").child(id).setValue(ques)
        .addOnSuccessListener {
            Log.d("FB", "OK")

           //problems with context here!!
            Toast.makeText(context, "Successfully Added to FB", Toast.LENGTH_SHORT).show()

        }
        .addOnFailureListener {
            Log.d("FB", "Not inserted into FB")
        }
} 

Run Code Online (Sandbox Code Playgroud)

我知道为了从可组合函数显示 Toast,我应该获取上下文:

val context = LocalContext.current

但不知道在这种情况下如何获取上下文。

小智 6

如果您要从可组合函数调用该函数,请使其可组合并通过LocalContext.current. 如果您从 ViewModel 调用它,则可以将其设为AndroidViewModel并使用 the ApplicationContext。否则你不应该访问上下文。想想它的名字\xe2\x80\x94“上下文”\xe2\x80\x94形成应用程序状态的环境。遵循这个波长,就很容易理解应该在哪里访问 Context:你不能凭空获取它,你需要从 UI 相关的地方检索它。因此,请尝试执行上述方法之一。如果不合适,请提供有关调用该函数的位置的更多信息。

\n