1
+ package com.cornellappdev.scoop.ui.screens
2
+
3
+ import androidx.compose.foundation.BorderStroke
4
+ import androidx.compose.foundation.Canvas
5
+ import androidx.compose.foundation.Image
6
+ import androidx.compose.foundation.layout.*
7
+ import androidx.compose.material.*
8
+ import androidx.compose.runtime.Composable
9
+ import androidx.compose.runtime.rememberCoroutineScope
10
+ import androidx.compose.ui.Alignment
11
+ import androidx.compose.ui.Modifier
12
+ import androidx.compose.ui.geometry.Offset
13
+ import androidx.compose.ui.graphics.Color
14
+ import androidx.compose.ui.graphics.PathEffect
15
+ import androidx.compose.ui.layout.ContentScale
16
+ import androidx.compose.ui.res.painterResource
17
+ import androidx.compose.ui.unit.dp
18
+ import androidx.compose.ui.unit.sp
19
+ import androidx.navigation.NavController
20
+ import com.cornellappdev.scoop.R
21
+ import com.cornellappdev.scoop.ui.theme.Green
22
+ import com.google.accompanist.pager.PagerState
23
+ import kotlinx.coroutines.Dispatchers
24
+ import kotlinx.coroutines.launch
25
+ import kotlinx.coroutines.withContext
26
+
27
+ @OptIn(ExperimentalMaterialApi ::class , com.google.accompanist.pager.ExperimentalPagerApi ::class )
28
+ @Composable
29
+ fun NavHeader (
30
+ title : String ,
31
+ backFunction : suspend () -> Unit ,
32
+ hasBackArrow : Boolean = false,
33
+ ) {
34
+ val scope = rememberCoroutineScope()
35
+
36
+ Column (
37
+ Modifier .fillMaxWidth()
38
+ .padding(0 .dp, 20 .dp, 0 .dp, 0 .dp),
39
+ ) {
40
+ Row (
41
+ Modifier .fillMaxWidth(),
42
+ verticalAlignment = Alignment .CenterVertically ,
43
+ horizontalArrangement = Arrangement .Center ,
44
+ ) {
45
+
46
+ if (hasBackArrow){
47
+ Button (
48
+ onClick = {
49
+ scope.launch {
50
+ backFunction()
51
+ }
52
+ },
53
+ colors = ButtonDefaults .buttonColors(backgroundColor = Color .White ),
54
+ border = BorderStroke (width = 0 .dp, color = Color .White ),
55
+ elevation = ButtonDefaults .elevation(0 .dp)
56
+ ) {
57
+
58
+ Image (
59
+ painterResource(R .drawable.ic_baseline_arrow_back_24),
60
+ contentDescription = " " ,
61
+ contentScale = ContentScale .Crop ,
62
+ )
63
+ }
64
+ }
65
+
66
+ Spacer (modifier = Modifier .weight(2F ))
67
+
68
+ Text (
69
+ text = title,
70
+ fontSize = 25 .sp,
71
+ color = Color .Black ,
72
+ )
73
+
74
+ Spacer (modifier = Modifier .weight(0.5F ))
75
+
76
+ Image (
77
+ painterResource(R .drawable.header_line_black),
78
+ contentDescription = " " ,
79
+ contentScale = ContentScale .Crop ,
80
+ modifier = Modifier .padding(
81
+ top = 16 .dp,
82
+ ),
83
+ )
84
+ }
85
+
86
+ Row (
87
+ horizontalArrangement = Arrangement .End ,
88
+ modifier = Modifier
89
+ .fillMaxWidth()
90
+ ) {
91
+ val pathEffect = PathEffect .dashPathEffect(floatArrayOf(15f , 15f ), 0f )
92
+ Canvas (
93
+ Modifier
94
+ .fillMaxWidth()
95
+ .height(2 .dp)
96
+ ) {
97
+ drawLine(
98
+ color = Green ,
99
+ start = Offset (size.width * 3 / 7 , 0f ),
100
+ end = Offset (size.width + 100f , 0f ),
101
+ pathEffect = pathEffect,
102
+ strokeWidth = 2f
103
+ )
104
+ }
105
+ }
106
+
107
+ }
108
+ }
0 commit comments