Navigation git add .!

navigationHost
Shana CASCARRA 1 year ago
parent 5cfc57e864
commit af3ff9dacc

@ -38,10 +38,10 @@ class MainActivity : ComponentActivity() {
setContent {
//TopBarVerax(theme = theme, articles = articlesApi)
//TopBarVerax(theme = theme, articles = articles)
// TopBarVerax(theme = theme, articles = articlesApi)
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
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.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
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
fun VeraxNavHost() {
fun VeraxNavHost(articles : List<Article>, navController: NavHostController) {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = "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
@Composable
fun AffichageLesArticles(articles : List<Article>){
fun AffichageLesArticles(articles : List<Article>, goToArticle: (Article) -> Unit
){
Column(modifier = Modifier.verticalScroll(rememberScrollState())){
for(article in articles){
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
fun AffichageUnArticleInfo(e : Article){
fun AffichageUnArticleInfo(e : Article, goToArticle: (Article) -> Unit){
Column(modifier = Modifier
.padding(7.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)
)
Button(onClick = { /*TODO*/ },
Button(onClick = { goToArticle(e) },
colors = ButtonDefaults.buttonColors(
containerColor = Salmon,
contentColor = Color.Black

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

Loading…
Cancel
Save