如何在 activity 文件外写入的屏幕中获取上下文?

How to get context in screen written outside activity file?

我正在使用 Jetpack Compose 为我的 class 项目编写 UI,但是我是 android 的新手。所以我编写了不同的屏幕,它们基本上是 MainActivity.kt 文件之外的可组合函数。事情是我能够正确地编写视图,但是,当我需要显示诸如吐司之类的东西时,我必须提供上下文,而我无法在这些文件中获取上下文。请告诉我我做错了什么。

//MainActivity.kt file

class MainActivity : ComponentActivity() {

    lateinit var navController : NavHostController;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            CallOutTheme {
                navController = rememberNavController()
                Navigation(navController=navController,this)
            }
        }
    }
}

Navigation.kt 和 Screen.kt 文件的代码

//Navigation.kt
@Composable
fun Navigation(navController: NavHostController,context: Activity)
{

    NavHost(navController=navController, startDestination = Screen.HomeScreen.route){
       composable(route = Screen.HomeScreen.route)
        {
            WelcomeScreen(navController = navController,context)
                
        }

        composable(route = Screen.LoginScreen.route)
        {
            LoginScreen(context = context)
        }

    }
}

//Screen.kt
sealed class Screen(val route: String)
{
    object HomeScreen : Screen("home_screen")
    object LoginScreen : Screen("login_screen")
    object TextEntryScreen : Screen("text_entry_screen")
}

家的例子Screen.kt

@Composable
fun HomeScreen(){
   Text("this is where I need to use Toast or ")
}

您可以使用

LocalContext.current

获取其他屏幕中的上下文。 要记住的一件事是,在可组合函数的一开始就将它的值赋给一个变量,然后在任何需要的地方使用该变量。