_readStatus;
+
+ @override
+ void initState() {
+ super.initState();
+ _readStatus = List.generate(widget.paragraphs.length, (index) => false);
+ }
+
+ void _toggleReadStatus(int index) {
+ setState(() {
+ _readStatus[index] = !_readStatus[index];
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: Colors.white,
+ appBar: AppBar(
+ title: Text(widget.title),
+ backgroundColor: Color.fromARGB(225, 79, 76, 182),
+ ),
+ body: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ SizedBox(
+ height: 10,
+ child: Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.only(
+ bottomLeft: Radius.circular(40),
+ bottomRight: Radius.circular(40),
+ ),
+ color: Color.fromARGB(225, 79, 76, 182),
+ ),
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.all(20.0),
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Image.asset(
+ widget.imagePath,
+ width: 100,
+ height: 100,
+ fit: BoxFit.cover,
+ ),
+ const SizedBox(width: 16),
+ Expanded(
+ child: Text(
+ widget.title,
+ style: const TextStyle(
+ fontSize: 22,
+ fontWeight: FontWeight.bold,
+ color: Colors.black,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ const SizedBox(height: 16),
+ Expanded(
+ child: Padding(
+ padding: const EdgeInsets.all(18.0),
+ child: ListView.builder(
+ itemCount: widget.paragraphs.length,
+ itemBuilder: (context, index) {
+ return Padding(
+ padding: const EdgeInsets.only(bottom: 16.0),
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Expanded(
+ child:
+ // Text(
+ // widget.paragraphs[index] +
+ // style: TextStyle(color: Colors.black),
+ Html(
+ style: {"body": Style(color: Colors.black)},
+ data:
+ widget.paragraphs.toString() +
+ """
+
+
+
+ Enter a title, displayed at the top of the window.
+
+
+
+ Enter the main heading, usually the same as the title.
+ Be bold in stating your key points. Put them in a list:
+
+ - The first item in your list
+ - The second item; italicize key words
+
+ Improve your image by including an image.
+ 
+ Add a link to your favorite Web site.
+ Break up your page with a horizontal rule or two.
+
+ Finally, link to another page in your own Web site.
+
+ © Wiley Publishing, 2011
+
+
+ """,
+ ),
+ ),
+ // ),
+ // Checkbox(
+ // value: _readStatus[index],
+ // onChanged: (bool? value) {
+ // _toggleReadStatus(index);
+ // },
+ // ),
+ ],
+ ),
+ );
+ },
+ ),
+ ),
+ ),
+ ],
+ ),
+ // ),
+ );
+ }
+}
diff --git a/lib/screen/pustaka_screen copy 2.dart b/lib/screen/pustaka_screen copy 2.dart
new file mode 100644
index 0000000..0af1108
--- /dev/null
+++ b/lib/screen/pustaka_screen copy 2.dart
@@ -0,0 +1,230 @@
+import 'package:flutter/material.dart';
+import 'package:furibase/components/buildcard_info.dart';
+import 'package:furibase/components/collection_container.dart';
+import 'package:furibase/components/menu_button.dart';
+import 'package:furibase/components/scan_button.dart';
+import 'package:furibase/screen/Home_screen.dart';
+import 'package:furibase/screen/pustaka/list_education.dart';
+
+class PustakaScreen extends StatefulWidget {
+ const PustakaScreen({super.key});
+
+ @override
+ State createState() => _PustakaScreenState();
+}
+
+class _PustakaScreenState extends State {
+ final PageController _pageController = PageController();
+ int _selectedIndex = 0;
+
+ void _onMenuTapped(int index) {
+ setState(() {
+ _selectedIndex = index;
+ });
+ _pageController.animateToPage(
+ index,
+ duration: const Duration(milliseconds: 300),
+ curve: Curves.easeInOut,
+ );
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ body: Column(
+ children: [
+ // Header Section
+ Container(
+ padding: const EdgeInsets.all(10),
+ color: const Color.fromARGB(251, 122, 129, 121).withOpacity(0),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ BuildcardInfo(
+ icon: Icons.person,
+ text: 'User01',
+ extraIcon: Icons.emoji_events,
+ extraText: "5000",
+ width: 180,
+ ),
+ BuildcardInfo(
+ icon: Icons.monetization_on,
+ text: "1.300",
+ width: 90,
+ ),
+ ],
+ ),
+ ),
+
+ // Date Display
+ Padding(
+ padding: const EdgeInsets.symmetric(vertical: 10),
+ child: Text(
+ DateTime.now().toString(),
+ style: const TextStyle(color: Colors.white),
+ ),
+ ),
+
+ // Search Bar
+ Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 40, vertical: 10),
+ child: Container(
+ height: 47,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(20),
+ color: const Color.fromARGB(50, 237, 227, 227),
+ ),
+ padding: const EdgeInsets.symmetric(horizontal: 10),
+ child: Row(
+ children: [
+ const Icon(Icons.search, color: Colors.black54, size: 18),
+ const SizedBox(width: 8),
+ Expanded(
+ child: TextField(
+ style: const TextStyle(color: Colors.black, fontSize: 12),
+ decoration: const InputDecoration(
+ border: InputBorder.none,
+ hintText: 'Search...',
+ hintStyle: TextStyle(color: Colors.grey),
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+
+ // Collection Items
+ Expanded(
+ child: Padding(
+ padding: const EdgeInsets.symmetric(
+ horizontal: 120,
+ vertical: 40,
+ ),
+ child: GridView.count(
+ crossAxisCount: 2, // Membuat dua kolom dalam grid
+ crossAxisSpacing: 20,
+ mainAxisSpacing: 20,
+ children: [
+ CollectionContainer(
+ label: "Luffy",
+ imagesrc: 'images/luffy.png',
+ width: 100,
+ height: 100,
+ onTapAc:
+ () => {
+ Navigator.push(
+ context,
+ MaterialPageRoute(
+ builder: (context) => ListEducation(),
+ ),
+ ),
+ },
+ ),
+ CollectionContainer(
+ label: "Oni Chan",
+ imagesrc: 'images/klipartz.png',
+ width: 100,
+ height: 100,
+ onTapAc: () => {},
+ ),
+ CollectionContainer(
+ label: "Cepot",
+ imagesrc: 'images/cepott.png',
+ width: 100,
+ height: 100,
+ onTapAc: () => {},
+ ),
+ CollectionContainer(
+ label: "Cepot",
+ imagesrc: 'images/cepott.png',
+ width: 100,
+ height: 100,
+ onTapAc: () => {},
+ ),
+ ],
+ ),
+ ),
+ ),
+
+ // Horizontal Scroll List
+ SizedBox(
+ height: 100,
+ child: SingleChildScrollView(
+ scrollDirection: Axis.horizontal,
+ child: Row(
+ children: List.generate(
+ 10,
+ (index) => Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 8.0),
+ child: Card(
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(15),
+ ),
+ child: Container(
+ width: 80,
+ padding: const EdgeInsets.all(10),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Icon(
+ Icons.book,
+ size: 50,
+ color: Colors.blueAccent,
+ ),
+ Text(
+ 'Item $index',
+ style: const TextStyle(
+ fontWeight: FontWeight.bold,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+
+ // Bottom Navigation
+ Container(
+ color: Colors.transparent,
+ padding: const EdgeInsets.symmetric(vertical: 10),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+ children: [
+ MenuButton(
+ label: "E-furibuddy",
+ icon: 'icons/furrybuddy.svg',
+ onPress:
+ () => Navigator.push(
+ context,
+ MaterialPageRoute(builder: (context) => HomeScreen()),
+ ),
+ ),
+ MenuButton(
+ label: "Koleksi",
+ icon: 'icons/koleksi.svg',
+ onPress: () {},
+ ),
+ ScanButton(),
+ MenuButton(
+ label: "Pustaka",
+ icon: 'icons/Pustaka.svg',
+ onPress: () {},
+ ),
+ MenuButton(
+ label: "Saya",
+ icon: 'icons/Saya.svg',
+ onPress: () {},
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/screen/pustaka_screen copy 3.dart b/lib/screen/pustaka_screen copy 3.dart
new file mode 100644
index 0000000..aae9019
--- /dev/null
+++ b/lib/screen/pustaka_screen copy 3.dart
@@ -0,0 +1,234 @@
+import 'package:flutter/material.dart';
+import 'package:furibase/components/buildcard_info.dart';
+import 'package:furibase/components/collection_container.dart';
+import 'package:furibase/components/menu_button.dart';
+import 'package:furibase/components/scan_button.dart';
+import 'package:furibase/screen/Home_screen.dart';
+import 'package:furibase/screen/pustaka/list_education.dart';
+
+class PustakaScreen extends StatefulWidget {
+ const PustakaScreen({super.key});
+
+ @override
+ State createState() => _PustakaScreenState();
+}
+
+class _PustakaScreenState extends State {
+ final PageController _pageController = PageController();
+ int _selectedIndex = 0;
+ final TextEditingController _searchController = TextEditingController();
+ String _searchQuery = "";
+
+ final List