Navigation git add .!

navigationHost
Shana CASCARRA 1 year ago
parent 5cfc57e864
commit af3ff9dacc

@ -39,9 +39,9 @@ class MainActivity : ComponentActivity() {
// TopBarVerax(theme = theme, articles = articlesApi) // TopBarVerax(theme = theme, articles = articlesApi)
//TopBarVerax(theme = theme, articles = articles) TopBarVerax(theme = theme, articles = articles)
VeraxNavHost() // VeraxNavHost()
} }
} }

@ -1,15 +0,0 @@
package com.example.veraxapplication.data
import android.media.Image
/*
data class Article(
var Title : String,
var Description : String,
var Image : String,
var Author : String,
var Content : List<Paragraph>,
var LectureTime : String
)
*/

@ -1,6 +0,0 @@
package com.example.veraxapplication.data
/*
data class Paragraph(
var Content : String,
)
*/

@ -1,20 +0,0 @@
package com.example.veraxapplication.data
import com.example.veraxapplication.modele.articles.Article
object Stub {
/*
val Articles: List<Article> by lazy {
createArticles()
}
private fun createArticles(): List<Article> {
return listOf(
Article(1, "Titre1", "test du corps de l'article 1"),
Article(2, "Titre2", "test du corps de l'article 2"),
Article(3, "Titre3", "test du corps de l'article 3"),
Article(4, "Titre4", "test du corps de l'article 4")
)
}*/
}

@ -1,22 +1,46 @@
package com.example.veraxapplication.navigation package com.example.veraxapplication.navigation
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.navigation.NavController
import androidx.navigation.NavHostController
import androidx.navigation.NavType
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import com.example.veraxapplication.MainActivity import com.example.veraxapplication.MainActivity
import com.example.veraxapplication.modele.articles.Article
import com.example.veraxapplication.ui.article.AffichageLesArticles
import com.example.veraxapplication.ui.article.AfficherArticle
@Composable @Composable
fun VeraxNavHost() { fun VeraxNavHost(articles : List<Article>, navController: NavHostController) {
val navController = rememberNavController()
NavHost( NavHost(
navController = navController, navController = navController,
startDestination = "accueil" startDestination = "accueil"
){ ){
composable(route="accueil"){ composable(route="accueil"){
AffichageLesArticles(
articles = articles,
goToArticle = {
navController.navigate("article/${it.id}")
}
)
}
composable(
route="article/{articleid}",
arguments= listOf(navArgument("articleid"){ type= NavType.IntType})
){
it.arguments?.getInt("articleid")?.let { articleid ->
articles.find { it.id == articleid }?.let {
AfficherArticle(
e = it
)
}
}
} }
} }

@ -33,11 +33,12 @@ import com.example.veraxapplication.modele.articles.contenus.ContenuParagraphe
import com.example.veraxapplication.ui.theme.Salmon import com.example.veraxapplication.ui.theme.Salmon
@Composable @Composable
fun AffichageLesArticles(articles : List<Article>){ fun AffichageLesArticles(articles : List<Article>, goToArticle: (Article) -> Unit
){
Column(modifier = Modifier.verticalScroll(rememberScrollState())){ Column(modifier = Modifier.verticalScroll(rememberScrollState())){
for(article in articles){ for(article in articles){
Box (Modifier.clickable { /*faut je regarde la doc*/ }){ Box (Modifier.clickable { /*faut je regarde la doc*/ }){
AffichageUnArticleInfo(e = article) AffichageUnArticleInfo(e = article, goToArticle)
} }
} }
@ -45,7 +46,7 @@ fun AffichageLesArticles(articles : List<Article>){
} }
@Composable @Composable
fun AffichageUnArticleInfo(e : Article){ fun AffichageUnArticleInfo(e : Article, goToArticle: (Article) -> Unit){
Column(modifier = Modifier Column(modifier = Modifier
.padding(7.dp) .padding(7.dp)
.border(width = 1.dp, color = Color.Black, shape = RoundedCornerShape(10.dp)) .border(width = 1.dp, color = Color.Black, shape = RoundedCornerShape(10.dp))
@ -83,7 +84,7 @@ fun AffichageUnArticleInfo(e : Article){
.padding(5.dp, 35.dp) .padding(5.dp, 35.dp)
) )
Button(onClick = { /*TODO*/ }, Button(onClick = { goToArticle(e) },
colors = ButtonDefaults.buttonColors( colors = ButtonDefaults.buttonColors(
containerColor = Salmon, containerColor = Salmon,
contentColor = Color.Black contentColor = Color.Black

@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.filled.Menu import androidx.compose.material.icons.filled.Menu
import androidx.compose.material3.CenterAlignedTopAppBar import androidx.compose.material3.CenterAlignedTopAppBar
@ -32,8 +33,11 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import com.example.veraxapplication.R import com.example.veraxapplication.R
import com.example.veraxapplication.modele.articles.Article import com.example.veraxapplication.modele.articles.Article
import com.example.veraxapplication.navigation.VeraxNavHost
import com.example.veraxapplication.ui.article.AffichageLesArticles import com.example.veraxapplication.ui.article.AffichageLesArticles
import com.example.veraxapplication.ui.article.AfficherArticle import com.example.veraxapplication.ui.article.AfficherArticle
import com.example.veraxapplication.ui.theme.Orange import com.example.veraxapplication.ui.theme.Orange
@ -44,6 +48,11 @@ fun TopBarVerax(theme: List<String>, articles: List<Article>) {
var leMenu by remember { var leMenu by remember {
mutableStateOf(false) mutableStateOf(false)
} }
val navController = rememberNavController()
val navBackStackEntry by navController.currentBackStackEntryAsState()
Row() { Row() {
Scaffold( Scaffold(
topBar = { topBar = {
@ -59,14 +68,16 @@ fun TopBarVerax(theme: List<String>, articles: List<Article>) {
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) )
}, },
navigationIcon = { navigationIcon = { if (navBackStackEntry?.destination?.route != "accueil"){
IconButton(onClick = { /* action() */ }) { IconButton(onClick = { navController.popBackStack() }) {
Icon( Icon(
imageVector = Icons.Filled.ArrowBack, imageVector = Icons.AutoMirrored.Filled.ArrowBack,
contentDescription = "Retour", contentDescription = "Retour",
Modifier.size(30.dp) Modifier.size(30.dp)
) )
} }
}
}, },
actions = { actions = {
IconButton(onClick = { leMenu = !leMenu }) { IconButton(onClick = { leMenu = !leMenu }) {
@ -79,7 +90,11 @@ fun TopBarVerax(theme: List<String>, articles: List<Article>) {
DropdownMenu( DropdownMenu(
expanded = leMenu, onDismissRequest = { leMenu = false }, expanded = leMenu, onDismissRequest = { leMenu = false },
modifier = Modifier modifier = Modifier
.border(width = 1.dp, color = Color.Black, shape = RoundedCornerShape(10.dp)) .border(
width = 1.dp,
color = Color.Black,
shape = RoundedCornerShape(10.dp)
)
.background(Orange) .background(Orange)
) { ) {
theme.sorted().forEach { theme.sorted().forEach {
@ -126,8 +141,10 @@ fun TopBarVerax(theme: List<String>, articles: List<Article>) {
verticalArrangement = Arrangement.spacedBy(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp),
) { ) {
AffichageLesArticles(articles = articles) // AffichageLesArticles(articles = articles)
// AfficherArticle(articles.get(0)); // AfficherArticle(articles.get(0))
VeraxNavHost(articles = articles, navController)
} }

Loading…
Cancel
Save