NavGraphに発車予定のホーム画面を登録して、Compose Navigationで表示します。
:feature:departモジュールのbuild.gradle.ktsにCompose Navigationの依存ライブラリを追記します。
:
dependencies {
:
implementation(libs.navigation.compose)
implementation(libs.hilt.navigation.compose)
implementation(project(":feature:depart:home"))
}
追記後、『Sync Now』で内容をプロジェクトに反映させます。
:feature:departモジュールのnavigationディレクトリ(新規作成します)内にDepartNavigation.ktを作成し、NavGraphをNavHostに登録します。
package jp.co.progress_llc.portal.feature.depart.navigation
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import jp.co.progress_llc.portal.feature.depart.home.presentation.DepartHomeScreen
const val DEPART_ROUTE = "depart"
fun NavGraphBuilder.departNavigation() {
composable(DEPART_ROUTE) {
DepartHomeScreen()
}
}
:feature:departモジュールのdiディレクトリ(新規作成します)内にDepartNavGraphModule.ktを作成し、NavGraphをDI(Hilt)に登録します。
package jp.co.progress_llc.portal.feature.depart.di
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.IntoSet
import androidx.navigation.NavGraphBuilder
import jp.co.progress_llc.portal.feature.depart.navigation.departNavigation
@Module
@InstallIn(SingletonComponent::class)
object DepartNavGraphModule {
@Provides
@IntoSet
fun provideDepartNavGraph(): NavGraphBuilder.() -> Unit = { departNavigation() }
}
発車予定画面はアプリのホーム画面から遷移してきますので、:appモジュールのbuild.gradle.ktsに発車予定機能の窓口モジュールへの依存を追記します。
:
dependencies {
:
implementation(project(":feature:depart"))
:
}
追記後、『Sync Now』で内容をプロジェクトに反映させます。
発車予定画面はホーム画面の列車アイコンから遷移してきますので、:appモジュールのHomeScreen.ktにナビゲーション(画面遷移)を追記します。
:
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
:
import jp.co.progress_llc.portal.feature.depart.navigation.DEPART_ROUTE
:
fun HomeScreen (
modifier: Modifier = Modifier
modifier: Modifier = Modifier,
navController: NavHostController
) {
:
IconButton(
onClick = { },
onClick = { navController.navigate(DEPART_ROUTE) },
:
fun HomeScreenPreview() {
AppTheme {
HomeScreen()
val navController = rememberNavController()
HomeScreen(navController = navController)
}
}
:appモジュールのHomeNavigation.ktにもナビゲーションを追加します。
:
import androidx.navigation.NavHostController
:
fun NavGraphBuilder.homeNavigation() {
composable("home") {
HomeScreen()
}
}
fun NavGraphBuilder.homeNavigation(navController: NavHostController) {
composable("home") {
HomeScreen(navController = navController)
}
}
:appモジュールのHHomeNavGraphModule.ktにもナビゲーションを追加します。
:
import androidx.navigation.NavHostController
:
fun provideHomeNavGraph(): NavGraphBuilder.() -> Unit = {
homeNavigation()
}
fun provideHomeNavGraph(): (NavHostController) -> NavGraphBuilder.() -> Unit = {
navController -> { homeNavigation(navController) }
}
: