Compare commits
No commits in common. "a858d66653854cd4128832ab47efdcec33eeb5e8" and "bf9a57f23b3e6aacd4dee16a03cc3fefc217b829" have entirely different histories.
a858d66653
...
bf9a57f23b
@ -8,7 +8,7 @@ plugins {
|
|||||||
android {
|
android {
|
||||||
namespace = "com.example.furibase"
|
namespace = "com.example.furibase"
|
||||||
//compileSdk = flutter.compileSdkVersion
|
//compileSdk = flutter.compileSdkVersion
|
||||||
compileSdk = 35
|
compileSdk = 34
|
||||||
ndkVersion = "27.0.12077973"
|
ndkVersion = "27.0.12077973"
|
||||||
//ndkVersion = flutter.ndkVersion
|
//ndkVersion = flutter.ndkVersion
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ android {
|
|||||||
//minSdk = flutter.minSdkVersion
|
//minSdk = flutter.minSdkVersion
|
||||||
//targetSdk = flutter.targetSdkVersion
|
//targetSdk = flutter.targetSdkVersion
|
||||||
minSdk = 24 // Set to 24 or higher
|
minSdk = 24 // Set to 24 or higher
|
||||||
targetSdk = 35
|
targetSdk = 34
|
||||||
versionCode = flutter.versionCode
|
versionCode = flutter.versionCode
|
||||||
versionName = flutter.versionName
|
versionName = flutter.versionName
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,7 +19,7 @@ class CardList extends StatelessWidget {
|
|||||||
10.0,
|
10.0,
|
||||||
), // Opsional: membuat gambar lebih rounded
|
), // Opsional: membuat gambar lebih rounded
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
'assets/images/cepott.png', // Ganti dengan path gambar Anda
|
'images/cepott.png', // Ganti dengan path gambar Anda
|
||||||
width: 80, // Atur ukuran gambar
|
width: 80, // Atur ukuran gambar
|
||||||
height: 120,
|
height: 120,
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
|
|||||||
@ -13,7 +13,6 @@ class CollectionContainer extends StatelessWidget {
|
|||||||
final Color? textColor;
|
final Color? textColor;
|
||||||
final double? lblSize;
|
final double? lblSize;
|
||||||
final bool? circle;
|
final bool? circle;
|
||||||
final Color? colorContiner;
|
|
||||||
const CollectionContainer({
|
const CollectionContainer({
|
||||||
super.key,
|
super.key,
|
||||||
this.label,
|
this.label,
|
||||||
@ -27,7 +26,6 @@ class CollectionContainer extends StatelessWidget {
|
|||||||
this.iconw,
|
this.iconw,
|
||||||
this.lblSize,
|
this.lblSize,
|
||||||
this.circle,
|
this.circle,
|
||||||
this.colorContiner,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -98,7 +96,7 @@ class CollectionContainer extends StatelessWidget {
|
|||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
colorFilter: const ColorFilter.mode(
|
colorFilter: const ColorFilter.mode(
|
||||||
Color.fromARGB(255, 255, 255, 255),
|
Color.fromARGB(255, 118, 3, 3),
|
||||||
BlendMode.srcIn,
|
BlendMode.srcIn,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -14,7 +14,6 @@ class CollectionContainer extends StatelessWidget {
|
|||||||
final double? lblSize;
|
final double? lblSize;
|
||||||
final bool? circle;
|
final bool? circle;
|
||||||
final Color? colorContiner;
|
final Color? colorContiner;
|
||||||
final bool? small;
|
|
||||||
|
|
||||||
const CollectionContainer({
|
const CollectionContainer({
|
||||||
Key? key,
|
Key? key,
|
||||||
@ -30,7 +29,6 @@ class CollectionContainer extends StatelessWidget {
|
|||||||
this.lblSize,
|
this.lblSize,
|
||||||
this.circle,
|
this.circle,
|
||||||
this.colorContiner,
|
this.colorContiner,
|
||||||
this.small,
|
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -57,10 +55,7 @@ class CollectionContainer extends StatelessWidget {
|
|||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding:
|
padding: const EdgeInsets.only(bottom: 30.0),
|
||||||
(small ?? false)
|
|
||||||
? const EdgeInsets.only(bottom: 5.0)
|
|
||||||
: const EdgeInsets.only(bottom: 30.0),
|
|
||||||
child:
|
child:
|
||||||
imageSvg != null && imageSvg!.isNotEmpty
|
imageSvg != null && imageSvg!.isNotEmpty
|
||||||
? Container(
|
? Container(
|
||||||
@ -77,10 +72,9 @@ class CollectionContainer extends StatelessWidget {
|
|||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding:
|
padding: const EdgeInsets.all(
|
||||||
(small ?? false)
|
8.0,
|
||||||
? const EdgeInsets.all(1.0)
|
), // Tambahkan padding di sini
|
||||||
: const EdgeInsets.all(8.0),
|
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
imageSvg!,
|
imageSvg!,
|
||||||
width: iconw ?? 40,
|
width: iconw ?? 40,
|
||||||
@ -108,7 +102,7 @@ class CollectionContainer extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: (small ?? false) ? 0 : 10,
|
bottom: 10,
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|||||||
@ -7,9 +7,8 @@ class ScanButton extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Expanded(
|
||||||
width: 86,
|
child: Container(
|
||||||
height: 86,
|
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
shape: BoxShape.circle,
|
shape: BoxShape.circle,
|
||||||
color: const Color.fromARGB(223, 67, 63, 179),
|
color: const Color.fromARGB(223, 67, 63, 179),
|
||||||
@ -27,6 +26,7 @@ class ScanButton extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
onPressed: () {},
|
onPressed: () {},
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,8 +24,8 @@ class TabMenuButton extends StatelessWidget {
|
|||||||
IconButton(
|
IconButton(
|
||||||
icon: SvgPicture.asset(
|
icon: SvgPicture.asset(
|
||||||
icon!,
|
icon!,
|
||||||
width: 20,
|
width: 28,
|
||||||
height: 20,
|
height: 28,
|
||||||
colorFilter: ColorFilter.mode(
|
colorFilter: ColorFilter.mode(
|
||||||
isSelected
|
isSelected
|
||||||
? const Color.fromARGB(255, 106, 24, 207)
|
? const Color.fromARGB(255, 106, 24, 207)
|
||||||
@ -38,7 +38,7 @@ class TabMenuButton extends StatelessWidget {
|
|||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: onPress, // Menggunakan satu event handler saja
|
onTap: onPress, // Menggunakan satu event handler saja
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 110,
|
width: 120,
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
|
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color:
|
color:
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
import 'package:freekake/components/navbar_container.dart';
|
import 'package:freekake/components/navbar_container.dart';
|
||||||
import 'package:freekake/providers/character_provider.dart';
|
import 'package:freekake/providers/character_provider.dart';
|
||||||
import 'package:freekake/screen/Home_screen.dart';
|
import 'package:freekake/screen/Home_screen.dart';
|
||||||
@ -7,9 +6,6 @@ import 'package:freekake/screen/drraw_screen.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
|
||||||
|
|
||||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
|
|
||||||
runApp(const MyApp());
|
runApp(const MyApp());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -73,16 +73,21 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
body: Stack(
|
body: Stack(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Positioned.fill(
|
Positioned.fill(
|
||||||
child: RepaintBoundary(
|
child: UnityWidget(
|
||||||
child: Container(
|
onUnityCreated: onUnityCreated,
|
||||||
decoration: const BoxDecoration(
|
//isARScene: true,
|
||||||
image: const DecorationImage(
|
onUnityMessage: onUnityMessage,
|
||||||
image: AssetImage("assets/images/background.jpeg"),
|
//onUnitySceneLoaded: onUnitySceneLoaded,
|
||||||
fit: BoxFit.cover,
|
fullscreen: false,
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
|
// child: Container(
|
||||||
|
// decoration: BoxDecoration(
|
||||||
|
// image: DecorationImage(
|
||||||
|
// image: AssetImage("assets/images/background.jpeg"),
|
||||||
|
// fit: BoxFit.cover,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
),
|
),
|
||||||
// Positioned(
|
// Positioned(
|
||||||
// top: 0,
|
// top: 0,
|
||||||
@ -195,40 +200,40 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Positioned(
|
// Positioned(
|
||||||
bottom: 150,
|
// bottom: 150,
|
||||||
left: 0,
|
// left: 0,
|
||||||
right: 0,
|
// right: 0,
|
||||||
child: Column(
|
// child: Column(
|
||||||
children: [
|
// children: [
|
||||||
Container(
|
// Container(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
|
// padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
|
||||||
decoration: BoxDecoration(
|
// decoration: BoxDecoration(
|
||||||
color: Color.fromARGB(255, 247, 224, 236),
|
// color: Color.fromARGB(255, 247, 224, 236),
|
||||||
borderRadius: BorderRadius.circular(10),
|
// borderRadius: BorderRadius.circular(10),
|
||||||
boxShadow: [
|
// boxShadow: [
|
||||||
BoxShadow(
|
// BoxShadow(
|
||||||
color: Color.fromARGB(255, 214, 213, 121),
|
// color: Color.fromARGB(255, 214, 213, 121),
|
||||||
blurRadius: 5,
|
// blurRadius: 5,
|
||||||
spreadRadius: 2,
|
// spreadRadius: 2,
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
child: Text(
|
// child: Text(
|
||||||
"Halo....Jotaslim",
|
// "Halo....Jotaslim",
|
||||||
style: TextStyle(
|
// style: TextStyle(
|
||||||
fontSize: 12,
|
// fontSize: 12,
|
||||||
fontWeight: FontWeight.bold,
|
// fontWeight: FontWeight.bold,
|
||||||
color: Color(0xFF000000),
|
// color: Color(0xFF000000),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
SizedBox(height: 10),
|
// SizedBox(height: 10),
|
||||||
setHomeImage("assets/images/luffy.png", 300),
|
// setHomeImage("images/luffy.png", 300),
|
||||||
// Image.asset("images/luffy.png", width: 300),
|
// // Image.asset("images/luffy.png", width: 300),
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
// BG MEnu
|
// BG MEnu
|
||||||
Stack(
|
Stack(
|
||||||
children: [
|
children: [
|
||||||
@ -242,8 +247,8 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
),
|
),
|
||||||
Positioned(bottom: 0, left: 0, right: 0, child: MainMenu()),
|
Positioned(bottom: 0, left: 0, right: 0, child: MainMenu()),
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: 5,
|
bottom: 1,
|
||||||
left: MediaQuery.of(context).size.width / 2 - 43,
|
left: MediaQuery.of(context).size.width / 2 - 48,
|
||||||
child: Transform.translate(
|
child: Transform.translate(
|
||||||
offset: Offset(0, -20),
|
offset: Offset(0, -20),
|
||||||
child: ScanButton(),
|
child: ScanButton(),
|
||||||
|
|||||||
@ -24,9 +24,7 @@ class _CollectionCaraterScreenState extends State<CollectionCaraterScreen> {
|
|||||||
children: [
|
children: [
|
||||||
Text("Favorit", style: TextStyle(color: Colors.black)),
|
Text("Favorit", style: TextStyle(color: Colors.black)),
|
||||||
Divider(height: 20, color: Colors.transparent),
|
Divider(height: 20, color: Colors.transparent),
|
||||||
SingleChildScrollView(
|
Row(
|
||||||
scrollDirection: Axis.horizontal,
|
|
||||||
child: Row(
|
|
||||||
// alignment: WrapAlignment.spaceAround,
|
// alignment: WrapAlignment.spaceAround,
|
||||||
spacing: 10, // Horizontal spacing between the containers
|
spacing: 10, // Horizontal spacing between the containers
|
||||||
// runSpacing: 10, // Vertical spacing between lines
|
// runSpacing: 10, // Vertical spacing between lines
|
||||||
@ -44,13 +42,10 @@ class _CollectionCaraterScreenState extends State<CollectionCaraterScreen> {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
Divider(height: 20, color: Colors.transparent),
|
Divider(height: 20, color: Colors.transparent),
|
||||||
Text("Semua", style: TextStyle(color: Colors.black)),
|
Text("Semua", style: TextStyle(color: Colors.black)),
|
||||||
Divider(height: 20, color: Colors.transparent),
|
Divider(height: 20, color: Colors.transparent),
|
||||||
SingleChildScrollView(
|
Row(
|
||||||
scrollDirection: Axis.horizontal,
|
|
||||||
child: Row(
|
|
||||||
// alignment: WrapAlignment.spaceAround,
|
// alignment: WrapAlignment.spaceAround,
|
||||||
spacing: 10, // Horizontal spacing between the containers
|
spacing: 10, // Horizontal spacing between the containers
|
||||||
// runSpacing: 10, // Vertical spacing between lines
|
// runSpacing: 10, // Vertical spacing between lines
|
||||||
@ -74,7 +69,6 @@ class _CollectionCaraterScreenState extends State<CollectionCaraterScreen> {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -11,9 +11,8 @@ class CollectionSkinScreen extends StatefulWidget {
|
|||||||
class _CollectionSkinScreenState extends State<CollectionSkinScreen> {
|
class _CollectionSkinScreenState extends State<CollectionSkinScreen> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return SingleChildScrollView(
|
||||||
// scrollDirection: Axis.horizontal,
|
scrollDirection: Axis.horizontal,
|
||||||
height: MediaQuery.of(context).size.height,
|
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
@ -22,13 +21,14 @@ class _CollectionSkinScreenState extends State<CollectionSkinScreen> {
|
|||||||
padding: EdgeInsets.only(top: 40, left: 20, right: 20, bottom: 20),
|
padding: EdgeInsets.only(top: 40, left: 20, right: 20, bottom: 20),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
|
||||||
children: [
|
children: [
|
||||||
Text("Luffy", style: TextStyle(color: Colors.black)),
|
Text("Luffy", style: TextStyle(color: Colors.black)),
|
||||||
Divider(height: 10),
|
Divider(height: 10),
|
||||||
SingleChildScrollView(
|
Row(
|
||||||
scrollDirection: Axis.horizontal,
|
// alignment: WrapAlignment.start,
|
||||||
child: Row(
|
|
||||||
spacing: 10, // Horizontal spacing between the containers
|
spacing: 10, // Horizontal spacing between the containers
|
||||||
|
// runSpacing: 10, // Vertical spacing between lines
|
||||||
children: [
|
children: [
|
||||||
CollectionContainer(
|
CollectionContainer(
|
||||||
label: "Luffy Kimono",
|
label: "Luffy Kimono",
|
||||||
@ -51,14 +51,13 @@ class _CollectionSkinScreenState extends State<CollectionSkinScreen> {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
Divider(height: 20, color: Colors.transparent),
|
Divider(height: 20, color: Colors.transparent),
|
||||||
Text("Lainnya", style: TextStyle(color: Colors.black)),
|
Text("Lainnya", style: TextStyle(color: Colors.black)),
|
||||||
Divider(height: 10),
|
Divider(height: 10),
|
||||||
SingleChildScrollView(
|
Row(
|
||||||
scrollDirection: Axis.horizontal,
|
// alignment: WrapAlignment.start,
|
||||||
child: Row(
|
spacing: 10, // Horizontal spacing between the containers
|
||||||
spacing: 10,
|
// runSpacing: 10, // Vertical spacing between lines
|
||||||
children: [
|
children: [
|
||||||
CollectionContainer(
|
CollectionContainer(
|
||||||
label: "Oni Chan (Default)",
|
label: "Oni Chan (Default)",
|
||||||
@ -73,7 +72,6 @@ class _CollectionSkinScreenState extends State<CollectionSkinScreen> {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@ -36,7 +36,6 @@ class _KoleksiScreenState extends State<KoleksiScreen> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
extendBody: true,
|
|
||||||
body: Stack(
|
body: Stack(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Positioned.fill(
|
Positioned.fill(
|
||||||
@ -116,9 +115,9 @@ class _KoleksiScreenState extends State<KoleksiScreen> {
|
|||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
Positioned(
|
Positioned(
|
||||||
top: 70,
|
top: 80,
|
||||||
left: 10,
|
left: 40,
|
||||||
right: 10,
|
right: 40,
|
||||||
child: Container(
|
child: Container(
|
||||||
// decoration: const BoxDecoration(
|
// decoration: const BoxDecoration(
|
||||||
// borderRadius: BorderRadius.all(Radius.circular(20)),
|
// borderRadius: BorderRadius.all(Radius.circular(20)),
|
||||||
@ -149,8 +148,8 @@ class _KoleksiScreenState extends State<KoleksiScreen> {
|
|||||||
),
|
),
|
||||||
Positioned(bottom: 0, left: 0, right: 0, child: MainMenu()),
|
Positioned(bottom: 0, left: 0, right: 0, child: MainMenu()),
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: 5,
|
bottom: 1,
|
||||||
left: MediaQuery.of(context).size.width / 2 - 43,
|
left: MediaQuery.of(context).size.width / 2 - 48,
|
||||||
child: Transform.translate(
|
child: Transform.translate(
|
||||||
offset: Offset(0, -20),
|
offset: Offset(0, -20),
|
||||||
child: ScanButton(),
|
child: ScanButton(),
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import 'package:freekake/components/collection_container%20copy.dart';
|
|||||||
import 'package:freekake/components/main_menu.dart';
|
import 'package:freekake/components/main_menu.dart';
|
||||||
import 'package:freekake/components/topbar_container.dart';
|
import 'package:freekake/components/topbar_container.dart';
|
||||||
import 'package:freekake/screen/pustaka/pustaka_detail_screen.dart';
|
import 'package:freekake/screen/pustaka/pustaka_detail_screen.dart';
|
||||||
import 'package:freekake/helpers/color_helper.dart';
|
|
||||||
|
|
||||||
class ListEducation extends StatefulWidget {
|
class ListEducation extends StatefulWidget {
|
||||||
const ListEducation({super.key});
|
const ListEducation({super.key});
|
||||||
@ -44,33 +43,13 @@ class _ListEducationState extends State<ListEducation> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
String _searchQuery = "";
|
String _searchQuery = "";
|
||||||
final List<Map<String, dynamic>> _collections = [
|
final List<Map<String, String>> _collections = [
|
||||||
{
|
{"label": "Kesehatan", "image": "assets/icons/healthy.svg"},
|
||||||
"label": "Kesehatan",
|
{"label": "Gizi", "image": "assets/icons/Nutrition.svg"},
|
||||||
"image": "assets/icons/healthy.svg",
|
{"label": "Pendidikan", "image": "assets/icons/Education.svg"},
|
||||||
"color": "#cdd0ee",
|
{"label": "Keselamatan", "image": "assets/icons/Safety.svg"},
|
||||||
"category": "kesehatan",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Gizi",
|
|
||||||
"image": "assets/icons/Nutrition.svg",
|
|
||||||
"color": "#e8e29a",
|
|
||||||
"category": "gizi",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Pendidikan",
|
|
||||||
"image": "assets/icons/Education.svg",
|
|
||||||
"color": "#efd8c6",
|
|
||||||
"category": "pendidikan",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Keselamatan",
|
|
||||||
"image": "assets/icons/Safety.svg",
|
|
||||||
"color": "#cef1da",
|
|
||||||
"category": "keselamatan",
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
List<Map<String, dynamic>> filteredCollections =
|
List<Map<String, String>> filteredCollections =
|
||||||
_collections
|
_collections
|
||||||
.where(
|
.where(
|
||||||
(item) => item["label"]!.toLowerCase().contains(
|
(item) => item["label"]!.toLowerCase().contains(
|
||||||
@ -87,13 +66,13 @@ class _ListEducationState extends State<ListEducation> {
|
|||||||
),
|
),
|
||||||
actions: <Widget>[],
|
actions: <Widget>[],
|
||||||
),
|
),
|
||||||
backgroundColor: const Color.fromARGB(255, 255, 255, 255),
|
backgroundColor: Colors.black26,
|
||||||
body: Column(
|
body: Column(
|
||||||
children: [
|
children: [
|
||||||
// Header Section
|
// Header Section
|
||||||
Container(
|
Container(
|
||||||
width: MediaQuery.of(context).size.width,
|
width: MediaQuery.of(context).size.width,
|
||||||
height: 150,
|
height: 165,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: const Color.fromARGB(225, 79, 76, 182),
|
color: const Color.fromARGB(225, 79, 76, 182),
|
||||||
borderRadius: BorderRadius.only(
|
borderRadius: BorderRadius.only(
|
||||||
@ -106,7 +85,7 @@ class _ListEducationState extends State<ListEducation> {
|
|||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
horizontal: 20,
|
horizontal: 20,
|
||||||
vertical: 6,
|
vertical: 20,
|
||||||
),
|
),
|
||||||
child: Container(
|
child: Container(
|
||||||
height: 47,
|
height: 47,
|
||||||
@ -162,17 +141,21 @@ class _ListEducationState extends State<ListEducation> {
|
|||||||
return CollectionContainer(
|
return CollectionContainer(
|
||||||
label: item["label"]!,
|
label: item["label"]!,
|
||||||
imageSvg: item["image"]!,
|
imageSvg: item["image"]!,
|
||||||
iconw: 20,
|
iconw: 60,
|
||||||
iconh: 20,
|
iconh: 60,
|
||||||
width: 70,
|
width: 70,
|
||||||
height: 70,
|
height: 70,
|
||||||
|
circle: false,
|
||||||
textColor: Colors.black,
|
textColor: Colors.black,
|
||||||
lblSize: 10,
|
lblSize: 10,
|
||||||
colorContiner: ColorHelper.hexToColor(item["color"]),
|
|
||||||
onTapAc:
|
onTapAc:
|
||||||
() => {
|
() => {
|
||||||
searchController.clear(),
|
Navigator.push(
|
||||||
filterSearch(item["category"]),
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => ListEducation(),
|
||||||
|
),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}).toList(),
|
}).toList(),
|
||||||
|
|||||||
@ -91,25 +91,25 @@ class _PustakaScreenState extends State<PustakaScreen> {
|
|||||||
final List<Map<String, String>> _collections = [
|
final List<Map<String, String>> _collections = [
|
||||||
{
|
{
|
||||||
"label": "Luffy",
|
"label": "Luffy",
|
||||||
"image": "assets/images/luffy.png",
|
"image": "images/luffy.png",
|
||||||
"description":
|
"description":
|
||||||
"Karakter utama di One Piece.\nDia adalah bajak laut yang bercita-cita menjadi Raja Bajak Laut.",
|
"Karakter utama di One Piece.\nDia adalah bajak laut yang bercita-cita menjadi Raja Bajak Laut.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Oni Chan",
|
"label": "Oni Chan",
|
||||||
"image": "assets/images/klipartz.png",
|
"image": "images/klipartz.png",
|
||||||
"description":
|
"description":
|
||||||
"Karakter ikonik dari anime.\nIa dikenal karena sifatnya yang protektif dan penyayang.",
|
"Karakter ikonik dari anime.\nIa dikenal karena sifatnya yang protektif dan penyayang.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Cepot",
|
"label": "Cepot",
|
||||||
"image": "assets/images/cepott.png",
|
"image": "images/cepott.png",
|
||||||
"description":
|
"description":
|
||||||
"Tokoh wayang golek terkenal.\nCepot dikenal dengan lelucon dan kebijaksanaannya.",
|
"Tokoh wayang golek terkenal.\nCepot dikenal dengan lelucon dan kebijaksanaannya.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Cepot",
|
"label": "Cepot",
|
||||||
"image": "assets/images/cepott.png",
|
"image": "images/cepott.png",
|
||||||
"description":
|
"description":
|
||||||
"Tokoh wayang golek terkenal.\nCepot dikenal dengan lelucon dan kebijaksanaannya.",
|
"Tokoh wayang golek terkenal.\nCepot dikenal dengan lelucon dan kebijaksanaannya.",
|
||||||
},
|
},
|
||||||
|
|||||||
@ -22,26 +22,10 @@ class _PustakaScreenState extends State<PustakaScreen> {
|
|||||||
String _searchQuery = "";
|
String _searchQuery = "";
|
||||||
|
|
||||||
final List<Map<String, dynamic>> _collections = [
|
final List<Map<String, dynamic>> _collections = [
|
||||||
{
|
{"label": "Kesehatan", "image": "assets/icons/healthy.svg", "color": "#cdd0ee"},
|
||||||
"label": "Kesehatan",
|
{"label": "Gizi", "image": "assets/icons/Nutrition.svg", "color": "#e8e29a"},
|
||||||
"image": "assets/icons/healthy.svg",
|
{"label": "Pendidikan", "image": "assets/icons/Education.svg", "color": "#efd8c6"},
|
||||||
"color": "#cdd0ee",
|
{"label": "Keselamatan", "image": "assets/icons/Safety.svg", "color": "#cef1da"},
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Gizi",
|
|
||||||
"image": "assets/icons/Nutrition.svg",
|
|
||||||
"color": "#e8e29a",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Pendidikan",
|
|
||||||
"image": "assets/icons/Education.svg",
|
|
||||||
"color": "#efd8c6",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Keselamatan",
|
|
||||||
"image": "assets/icons/Safety.svg",
|
|
||||||
"color": "#cef1da",
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
void _onMenuTapped(int index) {
|
void _onMenuTapped(int index) {
|
||||||
@ -126,7 +110,7 @@ class _PustakaScreenState extends State<PustakaScreen> {
|
|||||||
height: 47,
|
height: 47,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(20),
|
borderRadius: BorderRadius.circular(20),
|
||||||
color: const Color.fromARGB(255, 237, 227, 227),
|
color: const Color.fromARGB(50, 237, 227, 227),
|
||||||
),
|
),
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 15),
|
padding: const EdgeInsets.symmetric(horizontal: 15),
|
||||||
child: Row(
|
child: Row(
|
||||||
@ -157,17 +141,16 @@ class _PustakaScreenState extends State<PustakaScreen> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
// Collection Items
|
// Collection Items
|
||||||
Container(
|
Expanded(
|
||||||
height: 440,
|
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
horizontal: 58,
|
horizontal: 100,
|
||||||
vertical: 60,
|
vertical: 40,
|
||||||
),
|
),
|
||||||
child: GridView.builder(
|
child: GridView.builder(
|
||||||
gridDelegate:
|
gridDelegate:
|
||||||
const SliverGridDelegateWithMaxCrossAxisExtent(
|
const SliverGridDelegateWithMaxCrossAxisExtent(
|
||||||
maxCrossAxisExtent: 140,
|
maxCrossAxisExtent: 140, // Maksimum lebar tiap item
|
||||||
mainAxisSpacing: 20,
|
mainAxisSpacing: 20,
|
||||||
crossAxisSpacing: 20,
|
crossAxisSpacing: 20,
|
||||||
childAspectRatio: 1, // 1:1 rasio (kotak)
|
childAspectRatio: 1, // 1:1 rasio (kotak)
|
||||||
@ -194,27 +177,52 @@ class _PustakaScreenState extends State<PustakaScreen> {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
// GridView.count(
|
||||||
|
// crossAxisCount: 2,
|
||||||
|
// crossAxisSpacing: 20,
|
||||||
|
// mainAxisSpacing: 20,
|
||||||
|
// children:
|
||||||
|
// filteredCollections.map((item) {
|
||||||
|
// return CollectionContainer(
|
||||||
|
// label: item["label"]!,
|
||||||
|
// imageSvg: item["image"]!,
|
||||||
|
// width: 80,
|
||||||
|
// height: 80,
|
||||||
|
// textColor: Colors.black,
|
||||||
|
// circle: true,
|
||||||
|
// colorContiner: item["color"]! as Color,
|
||||||
|
// onTapAc:
|
||||||
|
// () => {
|
||||||
|
// Navigator.push(
|
||||||
|
// context,
|
||||||
|
// MaterialPageRoute(
|
||||||
|
// builder: (context) => ListEducation(),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// },
|
||||||
|
// );
|
||||||
|
// }).toList(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 40,
|
||||||
|
vertical: 1,
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text("Daftar Topik", style: TextStyle(color: Colors.black)),
|
||||||
|
Divider(color: Colors.transparent),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
// SizedBox(
|
|
||||||
// child: Padding(
|
|
||||||
// padding: const EdgeInsets.symmetric(
|
|
||||||
// horizontal: 5,
|
|
||||||
// vertical: 1,
|
|
||||||
// ),
|
|
||||||
// child: Column(
|
|
||||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
// children: [
|
|
||||||
// Text("List Topic", style: TextStyle(color: Colors.black)),
|
|
||||||
// Divider(color: Colors.transparent),
|
|
||||||
// ],
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// Horizontal Scroll List
|
// Horizontal Scroll List
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 5, vertical: 5),
|
padding: EdgeInsets.symmetric(horizontal: 40, vertical: 10),
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
width: MediaQuery.of(context).size.width,
|
width: MediaQuery.of(context).size.width,
|
||||||
height: 100,
|
height: 100,
|
||||||
@ -276,7 +284,7 @@ class _PustakaScreenState extends State<PustakaScreen> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
// Bottom Navigation
|
// Bottom Navigation
|
||||||
// MainMenu(),
|
MainMenu(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
// BG MEnu
|
// BG MEnu
|
||||||
@ -292,8 +300,8 @@ class _PustakaScreenState extends State<PustakaScreen> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: 5,
|
bottom: 1,
|
||||||
left: MediaQuery.of(context).size.width / 2 - 43,
|
left: MediaQuery.of(context).size.width / 2 - 48,
|
||||||
child: Transform.translate(
|
child: Transform.translate(
|
||||||
offset: Offset(0, -20),
|
offset: Offset(0, -20),
|
||||||
child: ScanButton(),
|
child: ScanButton(),
|
||||||
|
|||||||
@ -340,8 +340,8 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
),
|
),
|
||||||
Positioned(bottom: 0, left: 0, right: 0, child: MainMenu()),
|
Positioned(bottom: 0, left: 0, right: 0, child: MainMenu()),
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: 5,
|
bottom: 1,
|
||||||
left: MediaQuery.of(context).size.width / 2 - 43,
|
left: MediaQuery.of(context).size.width / 2 - 48,
|
||||||
child: Transform.translate(
|
child: Transform.translate(
|
||||||
offset: Offset(0, -20),
|
offset: Offset(0, -20),
|
||||||
child: ScanButton(),
|
child: ScanButton(),
|
||||||
|
|||||||
@ -167,7 +167,7 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.0"
|
version: "5.0.0"
|
||||||
flutter_plugin_android_lifecycle:
|
flutter_plugin_android_lifecycle:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: flutter_plugin_android_lifecycle
|
name: flutter_plugin_android_lifecycle
|
||||||
sha256: "1c2b787f99bdca1f3718543f81d38aa1b124817dfeb9fb196201bea85b6134bf"
|
sha256: "1c2b787f99bdca1f3718543f81d38aa1b124817dfeb9fb196201bea85b6134bf"
|
||||||
|
|||||||
39
pubspec.yaml
39
pubspec.yaml
@ -43,7 +43,6 @@ dependencies:
|
|||||||
flutter_html: ^3.0.0-beta.2
|
flutter_html: ^3.0.0-beta.2
|
||||||
image_picker_for_web: ^3.0.6
|
image_picker_for_web: ^3.0.6
|
||||||
image_picker_web: ^4.0.0
|
image_picker_web: ^4.0.0
|
||||||
flutter_plugin_android_lifecycle: ^2.0.9
|
|
||||||
# arcore_flutter_plugin: ^0.2.0-alpha
|
# arcore_flutter_plugin: ^0.2.0-alpha
|
||||||
# flutter_unity_widget: ^2022.2.1
|
# flutter_unity_widget: ^2022.2.1
|
||||||
# arcore_flutter_plugin:
|
# arcore_flutter_plugin:
|
||||||
@ -78,32 +77,28 @@ flutter:
|
|||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
|
|
||||||
# To add assets to your application, add an assets section, like this:
|
# To add assets to your application, add an assets section, like this:
|
||||||
|
# assets:
|
||||||
|
# - images/a_dot_burr.jpeg
|
||||||
|
# - images/a_dot_ham.jpeg
|
||||||
assets:
|
assets:
|
||||||
- assets/images/Artboard 15@4x.png
|
- assets/icons/furrybuddy.svg
|
||||||
- assets/images/Artboard 16@4x.png
|
- assets/icons/Scan.svg
|
||||||
|
- assets/icons/Saya.svg
|
||||||
|
- assets/icons/Pustaka.svg
|
||||||
|
- assets/icons/koleksi.svg
|
||||||
|
- assets/icons/healthy.svg
|
||||||
|
- assets/icons/Nutrition.svg
|
||||||
|
- assets/icons/Education.svg
|
||||||
|
- assets/icons/Safety.svg
|
||||||
|
- assets/images/luffy.png
|
||||||
- assets/images/background.jpeg
|
- assets/images/background.jpeg
|
||||||
- assets/images/cepott.png
|
- assets/images/luffy-u.png
|
||||||
- assets/images/ft_cepot.png
|
|
||||||
- assets/images/ft_luffy.png
|
|
||||||
- assets/images/klipartz.png
|
- assets/images/klipartz.png
|
||||||
|
- assets/images/cepott.png
|
||||||
|
- assets/images/ft_luffy.png
|
||||||
|
- assets/images/ft_cepot.png
|
||||||
- assets/images/luffy-kimono.png
|
- assets/images/luffy-kimono.png
|
||||||
- assets/images/luffy-king.png
|
- assets/images/luffy-king.png
|
||||||
- assets/images/luffy-u.png
|
|
||||||
- assets/images/luffy.gif
|
|
||||||
- assets/images/luffy.png
|
|
||||||
|
|
||||||
# SVG files
|
|
||||||
- assets/icons/E-furrybuddy.svg
|
|
||||||
- assets/icons/E-furrybuddy1.svg
|
|
||||||
- assets/icons/Education.svg
|
|
||||||
- assets/icons/furrybuddy.svg
|
|
||||||
- assets/icons/healthy.svg
|
|
||||||
- assets/icons/Koleksi.svg
|
|
||||||
- assets/icons/Nutrition.svg
|
|
||||||
- assets/icons/Pustaka.svg
|
|
||||||
- assets/icons/Safety.svg
|
|
||||||
- assets/icons/Saya.svg
|
|
||||||
- assets/icons/Scan.svg
|
|
||||||
|
|
||||||
# An image asset can refer to one or more resolution-specific "variants", see
|
# An image asset can refer to one or more resolution-specific "variants", see
|
||||||
# https://flutter.dev/to/resolution-aware-images
|
# https://flutter.dev/to/resolution-aware-images
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user