Skip to content

Instantly share code, notes, and snippets.

View widiarifki's full-sized avatar

Widia Rifkianti widiarifki

View GitHub Profile
@Entity(tableName = "tbl_shopping_item")
data class ShoppingItem(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
@ColumnInfo(name = "name")
var name: String,
@ColumnInfo(name = "is_ticked")
var isTicked: Boolean = false
)
buildscript {
ext {
compose_version = '1.0.1'
// Compose need to use Kotlin v 1.5.10 or more
kotlin_version = '1.5.21'
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@Composable
fun LoadingIndicator(modifier: Modifier = Modifier) {
Box(modifier = modifier.fillMaxWidth(), contentAlignment = Alignment.Center) {
CircularProgressIndicator(color = MaterialTheme.colors.primary)
}
}
@Composable
fun EmptyState(modifier: Modifier = Modifier) {
Box(modifier = modifier.fillMaxWidth(), contentAlignment = Alignment.Center) {
Text(
text = "Yah, belum ada item belanja!",
style = MaterialTheme.typography.h5,
textAlign = TextAlign.Center
)
}
}
@Composable
fun ShoppingList(
shoppingItems: List<ShoppingItem>,
onToggleTickItem: (ShoppingItem) -> Unit,
onDeleteItem: (ShoppingItem) -> Unit,
modifier: Modifier = Modifier
) {
LazyColumn(modifier.padding(8.dp)) {
items(
items = shoppingItems,
@Composable
fun FormInputContainer(
onAddItem: (ShoppingItem) -> Unit
) {
var newItem by remember { mutableStateOf("") }
val focusManager = LocalFocusManager.current
Row(
modifier = Modifier
.fillMaxWidth(1f)