update 01

This commit is contained in:
='fauz
2025-05-08 13:16:02 +07:00
parent ee9c2ce4a4
commit d9bedf51a9
13 changed files with 710 additions and 284 deletions
+96 -88
View File
@@ -42,9 +42,12 @@ class _ListEducationState extends State<ListEducation> {
final List<Map<String, dynamic>> _listContent = [
{
"title": "Taburan Lezat untuk Nasi!",
"image": "assets/icons/healthy.svg",
"image": "assets/html/furikake/furikake.jpg",
"color": "#cdd0ee",
"category": "Kesehatan",
"type": "Materi",
"point": "10",
"coint": "100",
"body":
"""Tahukah kamu bahwa di Jepang ada bumbu tabur yang bisa membuat nasi
menjadi lebih enak?
@@ -53,9 +56,12 @@ class _ListEducationState extends State<ListEducation> {
},
{
"title": "Makan Sehat dengan Gizi Seimbang",
"image": "assets/icons/Safety.svg",
"image": "assets/html/lemak.png",
"color": "#cef1da",
"category": "Keselamatan",
"type": "Materi",
"point": "100",
"coint": "20",
"body":
"""upaya makan kita sehat, ada aturan "Isi Piringku" yang bisa kita ikuti:
🍽️ Separuh piring: Sayur dan buah 🍽️ Seperempat piring: Karbohidrat (seperti nasi atau roti)
@@ -281,99 +287,101 @@ class _ListEducationState extends State<ListEducation> {
topRight: Radius.circular(25),
),
),
child: Column(
children: [
SizedBox(height: 5),
Padding(
padding: EdgeInsets.symmetric(
horizontal: MediaQuery.of(context).size.width / 4,
),
child: Divider(
color: const Color.fromARGB(255, 255, 255, 255),
thickness: 2,
),
child: _listCard(context),
);
}
Column _listCard(BuildContext context) {
return Column(
children: [
SizedBox(height: 5),
Padding(
padding: EdgeInsets.symmetric(
horizontal: MediaQuery.of(context).size.width / 4,
),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10,
// vertical: 10,
),
child:
filteredItems.isEmpty
? const Center(
child: Text(
"Tidak ada hasil",
style: TextStyle(fontSize: 16, color: Colors.black54),
),
)
: Padding(
padding: EdgeInsets.only(
top: 10.0,
left: 10,
right: 10,
),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20),
),
color: const Color.fromARGB(255, 222, 181, 133),
child: Divider(
color: const Color.fromARGB(255, 255, 255, 255),
thickness: 2,
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10,
// vertical: 10,
),
child:
filteredItems.isEmpty
? const Center(
child: Text(
"Tidak ada hasil",
style: TextStyle(fontSize: 16, color: Colors.black54),
),
)
: Padding(
padding: EdgeInsets.only(top: 10.0, left: 10, right: 10),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20),
),
child: Padding(
padding: EdgeInsets.only(
top: 12,
right: 20,
left: 20,
),
child: GridView.builder(
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 1, // 2 Kolom
crossAxisSpacing: 10,
mainAxisSpacing: 10,
childAspectRatio: 2.5,
),
itemCount: _listContent.length,
itemBuilder: (context, index) {
return GestureDetector(
child: CardList(
title: _listContent[index]["title"] ?? "",
body: _listContent[index]["body"] ?? "",
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder:
(
context,
) => listDetailExtension.buildPage({
'title':
filteredItems[index]['category'],
'imagePath':
filteredItems[index]['image'],
'filepath':
filteredItems[index]['file'],
'paragraphs':
"""
"""
"<h1> ${_listContent[index]["title"]} </h1> <p> ${_listContent[index]["body"]}",
}),
),
);
},
);
},
),
color: const Color.fromARGB(255, 222, 181, 133),
),
child: Padding(
padding: EdgeInsets.only(
top: 12,
right: 20,
left: 20,
),
child: _generateList(),
),
),
),
),
),
],
),
],
);
}
GridView _generateList() {
return GridView.builder(
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 1, // 2 Kolom
crossAxisSpacing: 10,
mainAxisSpacing: 10,
childAspectRatio: 2.5,
),
itemCount: _listContent.length,
itemBuilder: (context, index) {
return GestureDetector(
child: CardList(
title: _listContent[index]["title"] ?? "",
body: _listContent[index]["body"] ?? "",
gambar: _listContent[index]['image'],
point: _listContent[index]['coint'],
coint: _listContent[index]['point'],
tipe: _listContent[index]['tipe'],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => listDetailExtension.buildPage({
'title': filteredItems[index]['category'],
'imagePath': filteredItems[index]['image'],
'filepath': filteredItems[index]['file'],
'paragraphs':
"""
"""
"<h1> ${_listContent[index]["title"]} </h1> <p> ${_listContent[index]["body"]}",
}),
),
);
},
);
},
);
}
}
@@ -2,13 +2,13 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_html/flutter_html.dart';
class ListDetailScreen extends StatefulWidget {
class ListPustakaDetailScreen extends StatefulWidget {
final String title;
final String imagePath;
final String paragraphs;
final String filepath;
const ListDetailScreen({
const ListPustakaDetailScreen({
super.key,
required this.title,
required this.imagePath,
@@ -20,7 +20,7 @@ class ListDetailScreen extends StatefulWidget {
_ListDetailScreenState createState() => _ListDetailScreenState();
}
class _ListDetailScreenState extends State<ListDetailScreen> {
class _ListDetailScreenState extends State<ListPustakaDetailScreen> {
late List<bool> _readStatus;
String _htmlContent = '';