athrainsky 1 gadu atpakaļ
vecāks
revīzija
a2a061ceb8

+ 1 - 1
README.md

@@ -1,4 +1,4 @@
-# telneo_lat
+# bug_listing
 
 A new Flutter project.
 

+ 1 - 1
android/app/build.gradle

@@ -44,7 +44,7 @@ android {
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
-        applicationId "com.example.telneo_lat"
+        applicationId "com.example.bug_listing"
         // You can update the following values to match your application needs.
         // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
         minSdkVersion flutter.minSdkVersion

+ 1 - 1
android/app/src/debug/AndroidManifest.xml

@@ -1,5 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.telneo_lat">
+    package="com.example.bug_listing">
     <!-- The INTERNET permission is required for development. Specifically,
          the Flutter tool needs it to communicate with the running application
          to allow setting breakpoints, to provide hot reload, etc.

+ 2 - 2
android/app/src/main/AndroidManifest.xml

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.telneo_lat">
+    package="com.example.bug_listing">
    <application
-        android:label="telneo_lat"
+        android:label="bug_listing"
         android:name="${applicationName}"
         android:icon="@mipmap/ic_launcher">
         <activity

+ 1 - 1
android/app/src/main/kotlin/com/example/telneo_lat/MainActivity.kt

@@ -1,4 +1,4 @@
-package com.example.telneo_lat
+package com.example.bug_listing
 
 import io.flutter.embedding.android.FlutterActivity
 

+ 1 - 1
android/app/src/profile/AndroidManifest.xml

@@ -1,5 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.telneo_lat">
+    package="com.example.bug_listing">
     <!-- The INTERNET permission is required for development. Specifically,
          the Flutter tool needs it to communicate with the running application
          to allow setting breakpoints, to provide hot reload, etc.

+ 2 - 2
ios/Runner/Info.plist

@@ -5,7 +5,7 @@
 	<key>CFBundleDevelopmentRegion</key>
 	<string>$(DEVELOPMENT_LANGUAGE)</string>
 	<key>CFBundleDisplayName</key>
-	<string>Telneo Lat</string>
+	<string>bug_listing</string>
 	<key>CFBundleExecutable</key>
 	<string>$(EXECUTABLE_NAME)</string>
 	<key>CFBundleIdentifier</key>
@@ -13,7 +13,7 @@
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundleName</key>
-	<string>telneo_lat</string>
+	<string>bug_listing</string>
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>

+ 0 - 248
lib/account.dart

@@ -1,248 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:date_format/date_format.dart';
-
-var date = formatDate(DateTime.now(), [HH, ':', nn]);
-
-class AccountPage extends StatefulWidget {
-  const AccountPage({super.key});
-
-  @override
-  State<AccountPage> createState() => _AccountPageState();
-}
-
-class _AccountPageState extends State<AccountPage> {
-  int _selectedNavbar = 2;
-
-  void _changeSelectedNavBar(int index) {
-    setState(() {
-      _selectedNavbar = index;
-    });
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-      appBar: AppBar(
-        backgroundColor: Colors.white,
-        automaticallyImplyLeading: false,
-        elevation: 0,
-        toolbarHeight: 44,
-        title: Text(
-          date,
-          style: TextStyle(color: Color(0xff303336), fontSize: 15),
-        ),
-        actions: [
-          Icon(
-            Icons.signal_cellular_alt,
-            color: Color(0xff303336),
-          ),
-          Icon(
-            Icons.wifi,
-            color: Color(0xff303336),
-          ),
-          RotatedBox(
-            quarterTurns: -3,
-            child: Icon(
-              Icons.battery_std,
-              color: Color(0xff303336),
-            ),
-          )
-        ],
-      ),
-      bottomNavigationBar: BottomNavigationBar(
-        items: [
-          BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Home'),
-          BottomNavigationBarItem(icon: Icon(Icons.history), label: 'History'),
-          BottomNavigationBarItem(icon: Icon(Icons.person), label: 'Account')
-        ],
-        currentIndex: _selectedNavbar,
-        onTap: _changeSelectedNavBar,
-      ),
-      body: Column(
-        children: [
-          Container(
-            height: 44,
-            alignment: Alignment.centerLeft,
-            padding: EdgeInsets.symmetric(horizontal: 10),
-            child: Text(
-              'Account',
-              style: TextStyle(fontWeight: FontWeight.bold),
-            ),
-          ),
-          Divider(),
-          Container(
-            padding: EdgeInsets.all(10),
-            child: Row(
-              children: [
-                CircleAvatar(
-                  backgroundColor: Color(0xff078C84),
-                  child: Text('J'),
-                ),
-                Padding(
-                  padding: const EdgeInsets.symmetric(horizontal: 10),
-                  child: Text(
-                    'James Triyono',
-                    style: TextStyle(fontWeight: FontWeight.bold),
-                  ),
-                )
-              ],
-            ),
-          ),
-          Divider(
-            thickness: 8,
-          ),
-          Container(
-            alignment: Alignment.centerLeft,
-            padding: EdgeInsets.all(10),
-            child: Text(
-              'Info',
-              style: TextStyle(fontWeight: FontWeight.bold),
-            ),
-          ),
-          Container(
-            height: 5,
-          ),
-          Container(
-            padding: EdgeInsets.symmetric(horizontal: 10),
-            child: Row(
-              children: [
-                Text(
-                  'User ID',
-                  style: TextStyle(color: Color(0xff292D32).withOpacity(0.75)),
-                ),
-                Spacer(),
-                Text(
-                  'jamet',
-                  style: TextStyle(color: Color(0xff292D32)),
-                )
-              ],
-            ),
-          ),
-          Container(
-            height: 8,
-          ),
-          Container(
-            padding: EdgeInsets.symmetric(horizontal: 10),
-            child: Row(
-              children: [
-                Text(
-                  'Location',
-                  style: TextStyle(color: Color(0xff292D32).withOpacity(0.75)),
-                ),
-                Spacer(),
-                Text(
-                  'Room 331',
-                  style: TextStyle(color: Color(0xff292D32)),
-                )
-              ],
-            ),
-          ),
-          Container(
-            height: 8,
-          ),
-          Container(
-            padding: EdgeInsets.symmetric(horizontal: 10),
-            child: Row(
-              children: [
-                Text(
-                  'Request Group',
-                  style: TextStyle(color: Color(0xff292D32).withOpacity(0.75)),
-                ),
-                Spacer(),
-                Text(
-                  'All',
-                  style: TextStyle(color: Color(0xff292D32)),
-                )
-              ],
-            ),
-          ),
-          Container(
-            height: 10,
-          ),
-          Divider(
-            thickness: 8,
-          ),
-          Container(
-            alignment: Alignment.centerLeft,
-            padding: EdgeInsets.all(10),
-            child: Text(
-              'Setting',
-              style: TextStyle(fontWeight: FontWeight.bold),
-            ),
-          ),
-          Container(
-            padding: EdgeInsets.symmetric(horizontal: 10),
-            child: Row(
-              children: [
-                Icon(
-                  Icons.language,
-                  color: Color(0xff292D32).withOpacity(0.75),
-                ),
-                Container(
-                    margin: EdgeInsets.symmetric(horizontal: 5),
-                    child: Text('Language')),
-                Spacer(),
-                Text('English'),
-                Icon(Icons.chevron_right)
-              ],
-            ),
-          ),
-          Container(
-            margin: EdgeInsets.all(10),
-            color: Color(0xff514844).withOpacity(0.5),
-            height: 1,
-            width: MediaQuery.of(context).size.width * 0.95,
-          ),
-          Container(
-            padding: EdgeInsets.symmetric(horizontal: 10),
-            child: Row(
-              children: [
-                RotationTransition(
-                  turns: AlwaysStoppedAnimation(135 / 360),
-                  child: Icon(
-                    Icons.vpn_key,
-                    color: Color(0xff292D32).withOpacity(0.75),
-                  ),
-                ),
-                Container(
-                    margin: EdgeInsets.symmetric(horizontal: 5),
-                    child: Text('Password')),
-                Spacer(),
-                Text('Change password'),
-                Icon(Icons.chevron_right)
-              ],
-            ),
-          ),
-          Container(
-            margin: EdgeInsets.all(10),
-            color: Color(0xff514844).withOpacity(0.5),
-            height: 1,
-            width: MediaQuery.of(context).size.width * 0.95,
-          ),
-          Container(
-            padding: EdgeInsets.symmetric(horizontal: 10),
-            child: Row(
-              children: [
-                Icon(
-                  Icons.logout,
-                  color: Color(0xff292D32).withOpacity(0.75),
-                ),
-                Container(
-                    margin: EdgeInsets.symmetric(horizontal: 5),
-                    child: Text('Logout')),
-                Spacer(),
-                Icon(Icons.chevron_right)
-              ],
-            ),
-          ),
-          Container(
-            height: 10,
-          ),
-          Divider(
-            thickness: 8,
-          ),
-        ],
-      ),
-    );
-  }
-}

+ 106 - 0
lib/chgpass.dart

@@ -0,0 +1,106 @@
+import 'package:flutter/material.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+
+class ChangepassPage extends StatelessWidget {
+  const ChangepassPage({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      backgroundColor: Colors.white,
+      body: Column(
+        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+        children: [
+          Center(
+              child: Row(
+            mainAxisAlignment: MainAxisAlignment.center,
+            children: [
+              Text(
+                'CHANGE PASSWORD',
+                style: TextStyle(color: Colors.black, fontSize: 48),
+              ),
+            ],
+          )),
+          Column(
+            children: [
+              Padding(
+                padding: const EdgeInsets.all(8.0),
+                child: SizedBox(
+                  width: 396,
+                  // height: 51,
+                  child: TextField(
+                    decoration: InputDecoration(
+                        border: OutlineInputBorder(),
+                        focusedBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        enabledBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        labelText: 'Enter Old Password', //todo get data
+                        labelStyle: TextStyle(color: Colors.black),
+                        filled: true,
+                        fillColor: Colors.white.withOpacity(0.25)),
+                    cursorColor: Colors.black,
+                    style: TextStyle(color: Colors.black),
+                  ),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.all(8.0),
+                child: SizedBox(
+                  width: 396,
+                  // height: 51,
+                  child: TextField(
+                    decoration: InputDecoration(
+                        border: OutlineInputBorder(),
+                        focusedBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        enabledBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        labelText: 'Enter New Password', //todo get data
+                        labelStyle: TextStyle(color: Colors.black),
+                        filled: true,
+                        fillColor: Colors.white.withOpacity(0.25)),
+                    cursorColor: Colors.black,
+                    style: TextStyle(color: Colors.black),
+                  ),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.all(20.0),
+                child: SizedBox(
+                  width: 396,
+                  height: 61,
+                  child: ElevatedButton(
+                    onPressed: null, //todo save chgpass
+                    style: ElevatedButton.styleFrom(
+                      backgroundColor: Colors.black, //todo putih lage
+                      side: BorderSide(color: Colors.white),
+                      shape: RoundedRectangleBorder(
+                        borderRadius: BorderRadius.circular(12.0),
+                      ),
+                    ),
+                    child: Text(
+                      'Edit',
+                      style: TextStyle(color: Colors.white),
+                    ),
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ],
+      ),
+      bottomNavigationBar: Footer(),
+    );
+  }
+}

+ 0 - 92
lib/data.dart

@@ -1,92 +0,0 @@
-import 'package:flutter/material.dart';
-
-final List items = [
-  {
-    'type': 'Foods & Drinks',
-    'color': Color(0xffCCA600),
-    'smallText': 'Fresh smoked tuna with traditional recipe ...',
-    'longText':
-        'Fresh tuna meat prepared with traditional recipes from North Maluku. All recipes mixed together ...',
-    'image': 'assets/images/food.png',
-  },
-  {
-    'type': 'Services',
-    'color': Color(0xff90D8F9),
-    'smallText': 'Great services with bla bla bla ...',
-    'longText':
-        'Great services with great service with great service with great service with great service with ...',
-    'image': 'assets/images/service.png'
-  },
-  {
-    'type': 'Additional',
-    'color': Color(0xffAACEE0),
-    'smallText': 'Additional service with bla bla bla ...',
-    'longText':
-        'Additional service with additional service with additional service with additional service with additional service with ...',
-    'image': 'assets/images/additional.png'
-  },
-  {
-    'type': 'First Aid',
-    'color': Color(0xffFF1111),
-    'smallText': 'First Aid with bla bla bla ...',
-    'longText':
-        'First Aid service with first Aid service with first Aid service with first Aid service with first Aid service with ...',
-    'image': 'assets/images/firstaid.png'
-  },
-  {
-    'type': 'Ticket',
-    'color': Color(0xff5ED8F6),
-    'smallText': 'Ticket service with ...',
-    'longText':
-        'Ticket service with ticket service with ticket service with ticket service with ticket service with ticket service with ...',
-    'image': 'assets/images/ticket.png'
-  },
-  {
-    'type': 'Vacation',
-    'color': Color(0xffCCA600),
-    'smallText': 'Vacation service with ...',
-    'longText':
-        'Vacation service with vacation service with vacation service with vacation service with vacation service with vacation service with ...',
-    'image': 'assets/images/vacation.png'
-  },
-  {
-    'type': 'Transportation',
-    'color': Color(0xffCCA600),
-    'smallText': 'Transportation service with ...',
-    'longText':
-        'Transportation service with transportation service with transportation service with transportation service with transportation service with ...',
-    'image': 'assets/images/transportation.png'
-  },
-  {
-    'type': 'Bathtub',
-    'color': Color(0xffFF1150),
-    'smallText': 'Bathtub service with ...',
-    'longText':
-        'Bathtub service with bathtub service with bathtub service with bathtub service with bathtub service with bathtub service with bathtub service with ...',
-    'image': 'assets/images/bathtub.png'
-  },
-  {
-    'type': 'Danger',
-    'color': Color(0xffCCA600),
-    'smallText': 'Danger service with ...',
-    'longText':
-        'Danger service with danger service with danger service with danger service with danger service with danger service with danger service with danger service with ...',
-    'image': 'assets/images/danger-sign.png'
-  },
-  {
-    'type': 'Database',
-    'color': Color(0xff90D8F9),
-    'smallText': 'Database service with ...',
-    'longText':
-        'Database service with database service with database service with database service with database service with database service with database service with database service with ...',
-    'image': 'assets/images/database.png'
-  },
-  {
-    'type': 'Noise',
-    'color': Color(0xffAACEE0),
-    'smallText': 'Noise service with ...',
-    'longText':
-        'Noise service with noise service with noise service with noise service with noise service with noise service with noise service with noise service with noise service with noise service with ...',
-    'image': 'assets/images/noise-pollution.png'
-  },
-];

+ 26 - 0
lib/databug.dart

@@ -0,0 +1,26 @@
+// ignore_for_file: file_names
+
+final List bugs = [
+  {
+    'bug':
+        'Harta tetap > Cek field "Penyusutan Dimulai Bulan Depan" - tambah harta tetap > Saat ini label field "Penyusutan Dimulai Bulan Depan" sebaiknya dibuat 1 baris',
+    'goodday': 'https://www.goodday.work/t/42cTCS',
+    'created': '5 apr 2024 13:22:34',
+    'level': 'Minor',
+    'qc': 'Irma',
+    'status': 'On Progress',
+    'programmer': 'Arif',
+    'dev_status': 'Not Start'
+  },
+  {
+    'bug':
+        'Billing > invoice penghuni > Saat ini pembayaran detail debit kredit ada double',
+    'goodday': 'https://www.goodday.work/t/YsjiiE',
+    'created': '5 jun 2024 08:22:34',
+    'level': 'Major',
+    'qc': 'Mita',
+    'status': 'Done',
+    'programmer': 'Agus',
+    'dev_status': 'On Progress'
+  },
+];

+ 24 - 0
lib/datacomment.dart

@@ -0,0 +1,24 @@
+// ignore_for_file: file_names
+
+final List comments = [
+  {
+    'comment': 'bug ini sedang digarap',
+    'created': '5 apr 2024 13:22:34',
+    'creator': 'Irma',
+  },
+  {
+    'comment': 'sudah kelar',
+    'created': '5 jun 2024 01:22:34',
+    'creator': 'Agus',
+  },
+  {
+    'comment': 'masih kejadian',
+    'created': '17 apr 2024 22:22:34',
+    'creator': 'Mita',
+  },
+  {
+    'comment': 'hi sedang apa',
+    'created': '25 Jun 2024 08:22:34',
+    'creator': 'Arif',
+  },
+];

+ 18 - 0
lib/datamember.dart

@@ -0,0 +1,18 @@
+// ignore_for_file: file_names
+
+final List members = [
+  {
+    'project': 'TelMessenger',
+    'member1': 'irma',
+    'role1': 'QC',
+    'member2': 'agus',
+    'role2': 'Programmer'
+  },
+  {
+    'project': 'PropInspector',
+    'member1': 'mita',
+    'role1': 'QC',
+    'member2': 'dama',
+    'role2': 'Programmer'
+  },
+];

+ 8 - 0
lib/dataplatform.dart

@@ -0,0 +1,8 @@
+// ignore_for_file: file_names
+
+final List platforms = [
+  {'platform': 'Web', 'project': 'TelMessenger', 'owner': 'Yulianto'},
+  {'platform': 'Mobile', 'project': 'TelMessenger', 'owner': 'Yulianto'},
+  {'platform': 'Apartemen', 'project': 'PropInspector', 'owner': 'Tanto'},
+  {'platform': 'Hotel', 'project': 'PropInspector', 'owner': 'Tanto'},
+];

+ 19 - 0
lib/datatable.dart

@@ -0,0 +1,19 @@
+// ignore_for_file: file_names
+
+final List tables = [
+  {
+    'table': 'project',
+  },
+  {
+    'table': 'platform',
+  },
+  {
+    'table': 'bug',
+  },
+  {
+    'table': 'project_member',
+  },
+  {
+    'table': 'user',
+  },
+];

+ 40 - 0
lib/datauser.dart

@@ -0,0 +1,40 @@
+// ignore_for_file: file_names
+
+final List users = [
+  {
+    'user': 'Irma Trias',
+    'username': 'irma',
+  },
+  {
+    'user': 'Agus Sol',
+    'username': 'agus',
+  },
+  {
+    'user': 'Abidzar',
+    'username': 'abi',
+  },
+  {
+    'user': 'Arif Yu',
+    'username': 'arif',
+  },
+  {
+    'user': 'Yulianto',
+    'username': 'yul',
+  },
+  {
+    'user': 'Tantowi',
+    'username': 'tanto',
+  },
+  {
+    'user': 'Sasmita',
+    'username': 'mita',
+  },
+  {
+    'user': 'Tiyan',
+    'username': 'tiyan',
+  },
+  {
+    'user': 'Agus Sol',
+    'username': 'agus',
+  },
+];

+ 0 - 396
lib/detail.dart

@@ -1,396 +0,0 @@
-import 'package:dotted_line/dotted_line.dart';
-import 'package:flutter/material.dart';
-import 'package:date_format/date_format.dart';
-import 'package:timeline_tile/timeline_tile.dart';
-
-var date = formatDate(DateTime.now(), [HH, ':', nn]);
-
-class DetailPage extends StatelessWidget {
-  final Map<String, dynamic> items;
-  DetailPage({super.key, required this.items});
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-      appBar: AppBar(
-        backgroundColor: Colors.white,
-        automaticallyImplyLeading: false,
-        elevation: 0,
-        toolbarHeight: 44,
-        title: Text(
-          date,
-          style: TextStyle(color: Color(0xff303336), fontSize: 15),
-        ),
-        actions: [
-          Icon(
-            Icons.signal_cellular_alt,
-            color: Color(0xff303336),
-          ),
-          Icon(
-            Icons.wifi,
-            color: Color(0xff303336),
-          ),
-          RotatedBox(
-            quarterTurns: -3,
-            child: Icon(
-              Icons.battery_std,
-              color: Color(0xff303336),
-            ),
-          )
-        ],
-      ),
-      body: SingleChildScrollView(
-        child: Column(
-          children: [
-            Row(
-              children: [
-                BackButton(),
-                Text(
-                  'Detail',
-                  style: TextStyle(fontWeight: FontWeight.bold, fontSize: 17),
-                ),
-                Spacer(),
-                ElevatedButton(
-                  onPressed: () {},
-                  style: ElevatedButton.styleFrom(
-                      backgroundColor: Color(0xff078C84).withOpacity(0.1),
-                      side: BorderSide(color: Color(0xff078C84)),
-                      shape: RoundedRectangleBorder(
-                          borderRadius: BorderRadius.circular(35))),
-                  child: Row(
-                    children: [
-                      Text(
-                        'Forum',
-                        style:
-                            TextStyle(color: Color(0xff078C84), fontSize: 15),
-                      ),
-                      SizedBox(
-                        width: 5,
-                      ),
-                      Icon(
-                        Icons.message_outlined,
-                        color: Color(0xff078C84),
-                      )
-                    ],
-                  ),
-                )
-              ],
-            ),
-            Divider(),
-            Container(
-              height: 44,
-              alignment: Alignment.centerLeft,
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Text(
-                items['type'],
-                style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14),
-              ),
-            ),
-            Row(
-              children: [
-                Container(
-                  width: 400,
-                  margin: EdgeInsets.symmetric(horizontal: 10),
-                  decoration: BoxDecoration(
-                      border: Border.all(color: Colors.black.withOpacity(0.1)),
-                      shape: BoxShape.rectangle,
-                      borderRadius: BorderRadius.circular(12)),
-                  child: Row(
-                    children: [
-                      SizedBox(
-                        width: 100,
-                        height: 79.17,
-                        child: gambar(items),
-                      ),
-                      Container(
-                        width: 5,
-                      ),
-                      Column(
-                        children: [
-                          Container(
-                            margin: EdgeInsets.all(5),
-                            child: Text(
-                              items['smallText'],
-                              overflow: TextOverflow.clip,
-                              style: TextStyle(
-                                  fontWeight: FontWeight.w400,
-                                  color: Color(0xff292D32),
-                                  fontSize: 14),
-                            ),
-                          ),
-                          DottedLine(
-                            lineLength: 272,
-                          ),
-                          Container(
-                            margin: EdgeInsets.all(5),
-                            width: 272,
-                            child: Text(
-                              items['longText'],
-                              overflow: TextOverflow.clip,
-                              style: TextStyle(
-                                  fontWeight: FontWeight.w300,
-                                  color: Color(0xff292D32),
-                                  fontSize: 13),
-                            ),
-                          )
-                        ],
-                      )
-                    ],
-                  ),
-                ),
-              ],
-            ),
-            Container(
-              height: 10,
-            ),
-            Container(
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Row(
-                children: [
-                  Text(
-                    'Ticket Number',
-                    style: TextStyle(color: Color(0xff292D32), fontSize: 14),
-                  ),
-                  Spacer(),
-                  Text(
-                    '202209270254',
-                    style: TextStyle(color: Color(0xff292D32), fontSize: 14),
-                  )
-                ],
-              ),
-            ),
-            Container(
-              height: 10,
-            ),
-            Container(
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Row(
-                children: [
-                  Text(
-                    'Location',
-                    style: TextStyle(color: Color(0xff292D32), fontSize: 14),
-                  ),
-                  Spacer(),
-                  Text(
-                    'Room 331',
-                    style: TextStyle(color: Color(0xff292D32), fontSize: 14),
-                  )
-                ],
-              ),
-            ),
-            Container(
-              margin: EdgeInsets.all(10),
-              height: 1,
-              color: Color(0xff292D32).withOpacity(0.5),
-            ),
-            Container(
-              alignment: Alignment.centerLeft,
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Text(
-                'Image',
-                style: TextStyle(fontWeight: FontWeight.w400, fontSize: 14),
-              ),
-            ),
-            Container(
-              height: 5,
-            ),
-            Container(
-              alignment: Alignment.centerLeft,
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Text(
-                'No image attached.',
-                style: TextStyle(
-                    fontWeight: FontWeight.w400,
-                    fontSize: 12,
-                    color: Color(0xff292D32).withOpacity(0.85)),
-              ),
-            ),
-            Container(
-              height: 10,
-            ),
-            Container(
-              alignment: Alignment.centerLeft,
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Text(
-                'Note',
-                style: TextStyle(fontWeight: FontWeight.w400, fontSize: 14),
-              ),
-            ),
-            Container(
-              height: 5,
-            ),
-            Container(
-              alignment: Alignment.centerLeft,
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Text(
-                '-',
-                style: TextStyle(
-                    fontWeight: FontWeight.w400,
-                    fontSize: 12,
-                    color: Color(0xff292D32).withOpacity(0.85)),
-              ),
-            ),
-            Divider(
-              thickness: 8,
-            ),
-            Container(
-              height: 10,
-            ),
-            Container(
-              alignment: Alignment.centerLeft,
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Text(
-                'Activity',
-                style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14),
-              ),
-            ),
-            Container(
-              height: 10,
-            ),
-            Container(
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Row(
-                children: [
-                  Text(
-                    'Servant',
-                    style: TextStyle(color: Color(0xff292D32), fontSize: 14),
-                  ),
-                  Spacer(),
-                  Text(
-                    'Rendra WS',
-                    style: TextStyle(color: Color(0xff292D32), fontSize: 14),
-                  )
-                ],
-              ),
-            ),
-            Container(
-              margin: EdgeInsets.all(10),
-              height: 1,
-              color: Color(0xff292D32).withOpacity(0.5),
-            ),
-            Container(
-              alignment: Alignment.centerLeft,
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Text(
-                'Timeline',
-                style: TextStyle(fontWeight: FontWeight.w400, fontSize: 14),
-              ),
-            ),
-            Container(
-              margin: EdgeInsets.all(10),
-              child: Column(
-                children: [
-                  SizedBox(
-                      child: TimelineTile(
-                          isFirst: true,
-                          endChild: Container(
-                            margin:
-                                EdgeInsets.only(bottom: 10, top: 10, left: 10),
-                            child: Row(
-                              children: [
-                                Text('Requested'),
-                                Spacer(),
-                                Text('31 Jan 12:43')
-                              ],
-                            ),
-                          ))),
-                  SizedBox(
-                      child: TimelineTile(
-                          endChild: Container(
-                    margin: EdgeInsets.only(bottom: 10, top: 10, left: 10),
-                    child: Row(
-                      children: [
-                        Text('On Process'),
-                        Spacer(),
-                        Text('31 Jan 14:43')
-                      ],
-                    ),
-                  ))),
-                  SizedBox(
-                      child: TimelineTile(
-                    indicatorStyle:
-                        IndicatorStyle(color: Color(0xff078C84), width: 25),
-                    isLast: true,
-                    endChild: Container(
-                      margin: EdgeInsets.only(bottom: 10, top: 10, left: 10),
-                      child: Row(
-                        children: [
-                          Text('Finish'),
-                          Spacer(),
-                          Text('31 Jan 15:43')
-                        ],
-                      ),
-                    ),
-                  )),
-                ],
-              ),
-            ),
-            Container(
-              alignment: Alignment.centerRight,
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Text(
-                'tamu minta dibungkus untuk dibawa keluar',
-                style: TextStyle(
-                  fontWeight: FontWeight.w400,
-                  fontSize: 12,
-                  color: Color(0xff078C84),
-                ),
-              ),
-            ),
-            Container(
-              height: 10,
-            ),
-            Container(
-              margin: EdgeInsets.all(10),
-              height: 1,
-              color: Color(0xff292D32).withOpacity(0.5),
-            ),
-            Container(
-              height: 10,
-            ),
-            Container(
-              padding: EdgeInsets.symmetric(horizontal: 10),
-              child: Row(
-                children: [
-                  Container(
-                    width: 10,
-                  ),
-                  Text(
-                    'Rate',
-                    style: TextStyle(color: Color(0xff292D32), fontSize: 14),
-                  ),
-                  Spacer(),
-                  Text(
-                    'Really pleased',
-                    style: TextStyle(color: Color(0xff292D32), fontSize: 14),
-                  ),
-                  Container(
-                    width: 10,
-                  ),
-                  Icon(Icons.tag_faces)
-                ],
-              ),
-            ),
-            Divider(
-              thickness: 8,
-            ),
-          ],
-        ),
-      ),
-    );
-  }
-
-  Container gambar(items) {
-    return Container(
-      decoration: BoxDecoration(
-          border: Border.all(color: items['color']),
-          borderRadius: BorderRadius.all(Radius.circular(20)),
-          color: items['color'].withOpacity(0.4)),
-      padding: const EdgeInsets.all(5.0),
-      child: Image.asset(
-        items['image'],
-        fit: BoxFit.cover,
-      ),
-    );
-  }
-}

+ 106 - 0
lib/edituser.dart

@@ -0,0 +1,106 @@
+import 'package:flutter/material.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+
+class EditUserPage extends StatelessWidget {
+  const EditUserPage({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      backgroundColor: Colors.white,
+      body: Column(
+        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+        children: [
+          Center(
+              child: Row(
+            mainAxisAlignment: MainAxisAlignment.center,
+            children: [
+              Text(
+                'EDIT USER',
+                style: TextStyle(color: Colors.black, fontSize: 48),
+              ),
+            ],
+          )),
+          Column(
+            children: [
+              Padding(
+                padding: const EdgeInsets.all(8.0),
+                child: SizedBox(
+                  width: 396,
+                  // height: 51,
+                  child: TextField(
+                    decoration: InputDecoration(
+                        border: OutlineInputBorder(),
+                        focusedBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        enabledBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        labelText: 'Enter Username', //todo get data
+                        labelStyle: TextStyle(color: Colors.black),
+                        filled: true,
+                        fillColor: Colors.white.withOpacity(0.25)),
+                    cursorColor: Colors.black,
+                    style: TextStyle(color: Colors.black),
+                  ),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.all(8.0),
+                child: SizedBox(
+                  width: 396,
+                  // height: 51,
+                  child: TextField(
+                    decoration: InputDecoration(
+                        border: OutlineInputBorder(),
+                        focusedBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        enabledBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        labelText: 'Enter Name', //todo get data
+                        labelStyle: TextStyle(color: Colors.black),
+                        filled: true,
+                        fillColor: Colors.white.withOpacity(0.25)),
+                    cursorColor: Colors.black,
+                    style: TextStyle(color: Colors.black),
+                  ),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.all(20.0),
+                child: SizedBox(
+                  width: 396,
+                  height: 61,
+                  child: ElevatedButton(
+                    onPressed: null, //todo save edit
+                    style: ElevatedButton.styleFrom(
+                      backgroundColor: Colors.black, //todo putih lage
+                      side: BorderSide(color: Colors.white),
+                      shape: RoundedRectangleBorder(
+                        borderRadius: BorderRadius.circular(12.0),
+                      ),
+                    ),
+                    child: Text(
+                      'Edit',
+                      style: TextStyle(color: Colors.white),
+                    ),
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ],
+      ),
+      bottomNavigationBar: Footer(),
+    );
+  }
+}

+ 22 - 0
lib/footer.dart

@@ -0,0 +1,22 @@
+import 'package:flutter/material.dart';
+
+class Footer extends StatelessWidget {
+  const Footer({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return BottomAppBar(
+      height: 50,
+      child: Padding(
+        padding: EdgeInsets.only(left: 120, right: 120),
+        child: Row(
+          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+          children: [
+            //todo clickable
+            Text('About Us'), Text('Contact'), Text('Privacy Policy')
+          ],
+        ),
+      ),
+    );
+  }
+}

+ 64 - 0
lib/header.dart

@@ -0,0 +1,64 @@
+// ignore_for_file: file_names
+
+import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
+
+class Header extends StatelessWidget implements PreferredSizeWidget {
+  final Text title;
+  final AppBar appBar;
+  final List<Widget> widgets;
+
+  /// you can add more fields that meet your needs
+
+  const Header(
+      {super.key,
+      required this.title,
+      required this.appBar,
+      required this.widgets});
+
+  @override
+  Widget build(BuildContext context) {
+    return AppBar(
+      backgroundColor: Colors.white,
+      leading: Icon(Icons.bug_report),
+      titleSpacing: 0,
+      title: Text(
+        'Bug Listing',
+        style: TextStyle(fontSize: 28, fontWeight: FontWeight.w500),
+      ),
+      actions: [
+        //todo hide kalo non login
+        ElevatedButton(
+            onPressed: () => context.go('/'),
+            style: ElevatedButton.styleFrom(surfaceTintColor: Colors.white),
+            child: Text(
+              'Home',
+              style: TextStyle(color: Colors.black),
+            )),
+        ElevatedButton(
+          onPressed: () => context.go('/listplatform'),
+          style: ElevatedButton.styleFrom(surfaceTintColor: Colors.white),
+          child: Text(
+            'Platform',
+            style: TextStyle(color: Colors.black),
+          ),
+        ),
+        ElevatedButton(
+          onPressed: () => context.go('/maintenance'),
+          style: ElevatedButton.styleFrom(surfaceTintColor: Colors.white),
+          child: Text(
+            'Maintenance',
+            style: TextStyle(color: Colors.black),
+          ),
+        ),
+        Padding(
+          padding: const EdgeInsets.all(8.0),
+          child: Text('Log Out'),
+        ),
+      ],
+    );
+  }
+
+  @override
+  Size get preferredSize => Size.fromHeight(appBar.preferredSize.height);
+}

+ 0 - 60
lib/lang.dart

@@ -1,60 +0,0 @@
-import 'package:flutter/material.dart';
-
-class Lang extends StatefulWidget {
-  const Lang({
-    super.key,
-  });
-
-  @override
-  State<Lang> createState() => _LangState();
-}
-
-class _LangState extends State<Lang> {
-  bool _hasBeenPressed = false;
-  @override
-  Widget build(BuildContext context) {
-    return Padding(
-      padding: const EdgeInsets.all(8.0),
-      child: Row(
-        children: [
-          ElevatedButton(
-              onPressed: () => {
-                    setState(() {
-                      _hasBeenPressed = !_hasBeenPressed;
-                    })
-                  },
-              style: ElevatedButton.styleFrom(
-                  backgroundColor: _hasBeenPressed
-                      ? Colors.white.withOpacity(0.4)
-                      : Color(0xffFF6600),
-                  shape: RoundedRectangleBorder(
-                      borderRadius: BorderRadius.only(
-                          topLeft: Radius.circular(30),
-                          bottomLeft: Radius.circular(30)))),
-              child: Text(
-                'EN',
-                style: TextStyle(color: Colors.white),
-              )),
-          ElevatedButton(
-              onPressed: () => {
-                    setState(() {
-                      _hasBeenPressed = !_hasBeenPressed;
-                    })
-                  },
-              style: ElevatedButton.styleFrom(
-                  backgroundColor: _hasBeenPressed
-                      ? Color(0xffFF6600)
-                      : Colors.white.withOpacity(0.4),
-                  shape: RoundedRectangleBorder(
-                      borderRadius: BorderRadius.only(
-                          topRight: Radius.circular(30),
-                          bottomRight: Radius.circular(30)))),
-              child: Text(
-                'ID',
-                style: TextStyle(color: Colors.white),
-              )),
-        ],
-      ),
-    );
-  }
-}

+ 0 - 222
lib/list.dart

@@ -1,222 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:go_router/go_router.dart';
-import 'package:namer_app/data.dart';
-import 'package:date_format/date_format.dart';
-
-var date = formatDate(DateTime.now(), [HH, ':', nn]);
-
-class ListPage extends StatelessWidget {
-  const ListPage({super.key});
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-        appBar: AppBar(
-          backgroundColor: Color(0xff078C84),
-          automaticallyImplyLeading: false,
-          elevation: 0,
-          toolbarHeight: 44,
-          title: Text(
-            date,
-            style: TextStyle(color: Colors.white, fontSize: 15),
-          ),
-          actions: [
-            Icon(
-              Icons.signal_cellular_alt,
-              color: Colors.white,
-            ),
-            Icon(
-              Icons.wifi,
-              color: Colors.white,
-            ),
-            RotatedBox(
-              quarterTurns: -3,
-              child: Icon(
-                Icons.battery_std,
-                color: Colors.white,
-              ),
-            )
-          ],
-        ),
-        body: Stack(children: [
-          Container(
-            decoration: BoxDecoration(color: Color(0xff078C84)),
-          ),
-          SingleChildScrollView(
-            child: Container(
-              decoration: BoxDecoration(
-                  color: Colors.white,
-                  borderRadius: BorderRadius.only(
-                      topLeft: Radius.circular(16),
-                      topRight: Radius.circular(16)),
-                  border: Border.all(color: Color(0xff078C84))),
-              child: Column(
-                children: [
-                  Container(
-                    margin: EdgeInsets.symmetric(vertical: 5),
-                    color: Color(0xff292D32).withOpacity(0.15),
-                    height: 1,
-                    width: 24,
-                  ),
-                  TopMenu(),
-                  Column(
-                    children: List.generate(
-                        7,
-                        (i) => SizedBox(
-                              child: ListTile(
-                                leading: SizedBox(
-                                  width: 60,
-                                  height: 60,
-                                  child: gambar(items[i]),
-                                ),
-                                title: Text(items[i]['type']),
-                                subtitle: Text(
-                                    'Description of ${items[i]['type'].toLowerCase()}'),
-                                trailing: IconDelete(
-                                  items: items[i],
-                                ),
-                              ),
-                            )),
-                  ),
-                  Divider(
-                    thickness: 8,
-                  ),
-                  AvailableMenu(),
-                  Column(
-                    children: List.generate(
-                        items.length,
-                        (i) => SizedBox(
-                              child: ListTile(
-                                leading: SizedBox(
-                                  width: 60,
-                                  height: 60,
-                                  child: gambar(items[i]),
-                                ),
-                                title: Text(items[i]['type']),
-                                subtitle: Text(
-                                    'Description of ${items[i]['type'].toLowerCase()}'),
-                                trailing: IconAdd(),
-                              ),
-                            )),
-                  )
-                ],
-              ),
-            ),
-          ),
-        ]));
-  }
-
-  Container gambar(items) {
-    return Container(
-      decoration: BoxDecoration(
-          border: Border.all(color: items['color']),
-          borderRadius: BorderRadius.all(Radius.circular(20)),
-          color: items['color'].withOpacity(0.4)),
-      padding: const EdgeInsets.all(5.0),
-      child: Image.asset(
-        items['image'],
-        fit: BoxFit.cover,
-      ),
-    );
-  }
-}
-
-class AvailableMenu extends StatelessWidget {
-  const AvailableMenu({
-    super.key,
-  });
-
-  @override
-  Widget build(BuildContext context) {
-    return Container(
-      padding: const EdgeInsets.all(5.0),
-      child: Row(
-        children: [
-          Text(
-            'Available Menu',
-            textAlign: TextAlign.left,
-            style: TextStyle(
-                fontWeight: FontWeight.bold, color: Color(0xff292D32)),
-          ),
-        ],
-      ),
-    );
-  }
-}
-
-class TopMenu extends StatelessWidget {
-  const TopMenu({
-    super.key,
-  });
-
-  @override
-  Widget build(BuildContext context) {
-    return Container(
-      padding: const EdgeInsets.all(5.0),
-      child: Row(
-        children: [
-          Text(
-            'Top Menu',
-            textAlign: TextAlign.left,
-            style: TextStyle(
-                fontWeight: FontWeight.bold, color: Color(0xff292D32)),
-          ),
-          Spacer(),
-          ElevatedButton(
-              style: ElevatedButton.styleFrom(
-                  backgroundColor: Color(0xff078C84).withOpacity(0.1)),
-              onPressed: () => context.go('/list/listblock'),
-              child: Text(
-                'Done',
-                style: TextStyle(
-                    color: Color(0xff078C84), fontWeight: FontWeight.w300),
-              ))
-        ],
-      ),
-    );
-  }
-}
-
-class IconAdd extends StatelessWidget {
-  const IconAdd({
-    super.key,
-  });
-
-  @override
-  Widget build(BuildContext context) {
-    return IconButton(
-      color: Colors.red,
-      onPressed: () {},
-      icon: Icon(Icons.add_circle),
-    );
-  }
-}
-
-class IconDelete extends StatelessWidget {
-  final Map<String, dynamic> items;
-  IconDelete({
-    required this.items,
-    super.key,
-  });
-
-  @override
-  Widget build(BuildContext context) {
-    return Row(
-      mainAxisSize: MainAxisSize.min,
-      children: [
-        IconButton(
-          icon: Icon(Icons.remove_circle),
-          color: Colors.red,
-          onPressed: () {
-            print(items);
-          },
-        ),
-        SizedBox(width: 10),
-        IconButton(
-          onPressed: () => context.go("/list/detail/${items['type']}"),
-          icon: Icon(Icons.menu),
-        )
-      ],
-    );
-  }
-}

+ 0 - 188
lib/listblock.dart

@@ -1,188 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:go_router/go_router.dart';
-import 'package:namer_app/data.dart';
-import 'package:date_format/date_format.dart';
-
-var date = formatDate(DateTime.now(), [HH, ':', nn]);
-
-class ListBlockPage extends StatelessWidget {
-  const ListBlockPage({super.key});
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-        appBar: AppBar(
-          backgroundColor: Color(0xff078C84),
-          automaticallyImplyLeading: false,
-          elevation: 0,
-          toolbarHeight: 44,
-          title: Text(
-            date,
-            style: TextStyle(color: Colors.white, fontSize: 15),
-          ),
-          actions: [
-            Icon(
-              Icons.signal_cellular_alt,
-              color: Colors.white,
-            ),
-            Icon(
-              Icons.wifi,
-              color: Colors.white,
-            ),
-            RotatedBox(
-              quarterTurns: -3,
-              child: Icon(
-                Icons.battery_std,
-                color: Colors.white,
-              ),
-            )
-          ],
-        ),
-        body: Stack(children: [
-          Container(
-            decoration: BoxDecoration(
-              // color: Color(0xff078C84),
-              gradient: LinearGradient(
-                  begin: Alignment.topCenter,
-                  end: Alignment.bottomCenter,
-                  colors: [
-                    Color(0xff078C84),
-                    Colors.white,
-                  ]),
-            ),
-          ),
-          Container(
-            decoration: BoxDecoration(
-                color: Colors.white,
-                borderRadius: BorderRadius.only(
-                    topLeft: Radius.circular(16),
-                    topRight: Radius.circular(16)),
-                border: Border.all(color: Color(0xff078C84))),
-            child: Column(
-              children: [
-                Container(
-                  margin: EdgeInsets.symmetric(vertical: 5),
-                  color: Color(0xff292D32).withOpacity(0.15),
-                  height: 1,
-                  width: 24,
-                ),
-                TopMenu(),
-                GridView.builder(
-                  shrinkWrap: true,
-                  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
-                      crossAxisCount: 4, childAspectRatio: 16 / 9),
-                  itemBuilder: (context, index) => Column(
-                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                    children: [
-                      InkWell(
-                        onTap: () => context.go(
-                            "/list/listblock/search/${items[index]['type']}"),
-                        child: SizedBox(
-                          width: 60,
-                          height: 60,
-                          child: gambar(items[index]),
-                        ),
-                      ),
-                      Text(items[index]['type']),
-                    ],
-                  ),
-                  itemCount: 7,
-                ),
-                AvailableMenu(),
-                GridView.builder(
-                  shrinkWrap: true,
-                  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
-                      crossAxisCount: 4, childAspectRatio: 16 / 9),
-                  itemBuilder: (context, index) => Column(
-                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                    children: [
-                      InkWell(
-                        onTap: () => context.go(
-                            "/list/listblock/search/${items[index]['type']}"),
-                        child: SizedBox(
-                          width: 60,
-                          height: 60,
-                          child: gambar(items[index]),
-                        ),
-                      ),
-                      Text(items[index]['type']),
-                    ],
-                  ),
-                  itemCount: items.length,
-                ),
-              ],
-            ),
-          ),
-        ]));
-  }
-
-  Container gambar(items) {
-    return Container(
-      decoration: BoxDecoration(
-          border: Border.all(color: items['color']),
-          borderRadius: BorderRadius.all(Radius.circular(20)),
-          color: items['color'].withOpacity(0.4)),
-      padding: const EdgeInsets.all(5.0),
-      child: Image.asset(
-        items['image'],
-        fit: BoxFit.cover,
-      ),
-    );
-  }
-}
-
-class AvailableMenu extends StatelessWidget {
-  const AvailableMenu({
-    super.key,
-  });
-
-  @override
-  Widget build(BuildContext context) {
-    return Container(
-      padding: const EdgeInsets.all(5.0),
-      child: Row(
-        children: [
-          Text(
-            'Available Menu',
-            textAlign: TextAlign.left,
-            style: TextStyle(
-                fontWeight: FontWeight.bold, color: Color(0xff292D32)),
-          ),
-        ],
-      ),
-    );
-  }
-}
-
-class TopMenu extends StatelessWidget {
-  const TopMenu({
-    super.key,
-  });
-
-  @override
-  Widget build(BuildContext context) {
-    return Container(
-      padding: const EdgeInsets.all(5.0),
-      child: Row(
-        children: [
-          Text(
-            'Top Menu',
-            textAlign: TextAlign.left,
-            style: TextStyle(
-                fontWeight: FontWeight.bold, color: Color(0xff292D32)),
-          ),
-          Spacer(),
-          ElevatedButton(
-              style: ElevatedButton.styleFrom(
-                  backgroundColor: Color(0xff078C84).withOpacity(0.1)),
-              onPressed: () => context.go('/account'),
-              child: Text(
-                'Customize',
-                style: TextStyle(
-                    color: Color(0xff078C84), fontWeight: FontWeight.w300),
-              ))
-        ],
-      ),
-    );
-  }
-}

+ 124 - 0
lib/listbug.dart

@@ -0,0 +1,124 @@
+import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
+import 'package:namer_app/databug.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+
+class ListBugPage extends StatelessWidget {
+  const ListBugPage({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      body: Stack(children: [
+        SingleChildScrollView(
+          child: Column(
+            children: [
+              Center(
+                  child: Row(
+                mainAxisAlignment: MainAxisAlignment.center,
+                children: [
+                  Text(
+                    'LIST BUG',
+                    style: TextStyle(color: Colors.black, fontSize: 48),
+                  ),
+                ],
+              )),
+              Column(
+                children: List.generate(
+                    2,
+                    (i) => SizedBox(
+                          child: ListTile(
+                            leading: SizedBox(
+                              child: Icon(Icons.bug_report),
+                            ),
+                            title: Text(bugs[i]['bug']),
+                            subtitle: Column(
+                              crossAxisAlignment: CrossAxisAlignment.start,
+                              children: [
+                                Text(bugs[i]['goodday']),
+                                Row(
+                                  children: [
+                                    Text(bugs[i]['created']),
+                                    Container(
+                                      width: 30,
+                                    ),
+                                    Text(bugs[i]['level']),
+                                  ],
+                                ),
+                                Row(
+                                  children: [
+                                    Text(bugs[i]['qc']),
+                                    Container(
+                                      width: 20,
+                                    ),
+                                    Text(bugs[i]['status']),
+                                    Container(
+                                      width: 20,
+                                    ),
+                                    Text(bugs[i]['programmer']),
+                                    Container(
+                                      width: 20,
+                                    ),
+                                    Text(bugs[i]['dev_status'])
+                                  ],
+                                )
+                              ],
+                            ),
+                            trailing: ButtonUser(
+                              items: bugs[i],
+                            ),
+                          ),
+                        )),
+              ),
+            ],
+          ),
+        ),
+      ]),
+      bottomNavigationBar: Footer(),
+    );
+  }
+}
+
+class ButtonUser extends StatelessWidget {
+  final Map<String, dynamic> items;
+  ButtonUser({
+    required this.items,
+    super.key,
+  });
+  //todo tombol item
+  //todo tombol delete
+  @override
+  Widget build(BuildContext context) {
+    return Row(
+      mainAxisSize: MainAxisSize.min,
+      children: [
+        ElevatedButton(
+          onPressed: null,
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Edit',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+        ElevatedButton(
+          onPressed: () => context.go('/login/bug/comment'),
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Comment',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+      ],
+    );
+  }
+}

+ 89 - 0
lib/listcomment.dart

@@ -0,0 +1,89 @@
+import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
+import 'package:namer_app/datacomment.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+
+class ListCommentPage extends StatelessWidget {
+  const ListCommentPage({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      body: Stack(children: [
+        SingleChildScrollView(
+          child: Column(
+            children: [
+              Center(
+                  child: Row(
+                mainAxisAlignment: MainAxisAlignment.center,
+                children: [
+                  Text(
+                    'LIST COMMENT',
+                    style: TextStyle(color: Colors.black, fontSize: 48),
+                  ),
+                ],
+              )),
+              Column(
+                children: List.generate(
+                    4,
+                    (i) => SizedBox(
+                          child: ListTile(
+                            leading: SizedBox(
+                              child: Icon(Icons.chat),
+                            ),
+                            title: Text(comments[i]['comment']),
+                            subtitle: Column(
+                              crossAxisAlignment: CrossAxisAlignment.start,
+                              children: [
+                                Text(comments[i]['created']),
+                                Text(comments[i]['creator'])
+                              ],
+                            ),
+                            trailing: ButtonUser(
+                              items: comments[i],
+                            ),
+                          ),
+                        )),
+              ),
+            ],
+          ),
+        ),
+      ]),
+      bottomNavigationBar: Footer(),
+    );
+  }
+}
+
+class ButtonUser extends StatelessWidget {
+  final Map<String, dynamic> items;
+  ButtonUser({
+    required this.items,
+    super.key,
+  });
+  //todo tombol item
+  //todo tombol delete
+  @override
+  Widget build(BuildContext context) {
+    return Row(
+      mainAxisSize: MainAxisSize.min,
+      children: [
+        ElevatedButton(
+          onPressed: null,
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Delete',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+      ],
+    );
+  }
+}

+ 111 - 0
lib/listmember.dart

@@ -0,0 +1,111 @@
+import 'package:flutter/material.dart';
+import 'package:namer_app/datamember.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+
+class ListMemberPage extends StatelessWidget {
+  const ListMemberPage({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      body: Stack(children: [
+        SingleChildScrollView(
+          child: Column(
+            children: [
+              Center(
+                  child: Row(
+                mainAxisAlignment: MainAxisAlignment.center,
+                children: [
+                  Text(
+                    'LIST MEMBER',
+                    style: TextStyle(color: Colors.black, fontSize: 48),
+                  ),
+                ],
+              )),
+              Column(
+                children: List.generate(
+                    2,
+                    (i) => SizedBox(
+                          child: ListTile(
+                            leading: SizedBox(
+                              child: Icon(Icons.group_work),
+                            ),
+                            title: Text(members[i]['project']),
+                            subtitle: Column(
+                              crossAxisAlignment: CrossAxisAlignment.start,
+                              children: [
+                                Row(
+                                  children: [
+                                    Text(members[i]['member1']),
+                                    Expanded(child: Container()),
+                                    Text(members[i]['role1'])
+                                  ],
+                                ),
+                                Row(
+                                  children: [
+                                    Text(members[i]['member2']),
+                                    Expanded(child: Container()),
+                                    Text(members[i]['role2'])
+                                  ],
+                                )
+                              ],
+                            ),
+                            trailing: ButtonUser(
+                              items: members[i],
+                            ),
+                          ),
+                        )),
+              ),
+            ],
+          ),
+        ),
+      ]),
+      bottomNavigationBar: Footer(),
+    );
+  }
+}
+
+class ButtonUser extends StatelessWidget {
+  final Map<String, dynamic> items;
+  ButtonUser({
+    required this.items,
+    super.key,
+  });
+//todo delete
+  //todo tombol item
+  @override
+  Widget build(BuildContext context) {
+    return Row(
+      // crossAxisAlignment: CrossAxisAlignment.center,
+      mainAxisSize: MainAxisSize.min,
+      children: [
+        ElevatedButton(
+          onPressed: null,
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Edit',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+        ElevatedButton(
+          onPressed: null,
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Delete',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+      ],
+    );
+  }
+}

+ 100 - 0
lib/listplatform.dart

@@ -0,0 +1,100 @@
+import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
+import 'package:namer_app/dataplatform.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+
+class ListPlatformPage extends StatelessWidget {
+  const ListPlatformPage({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      body: Stack(children: [
+        SingleChildScrollView(
+          child: Column(
+            children: [
+              Center(
+                  child: Row(
+                mainAxisAlignment: MainAxisAlignment.center,
+                children: [
+                  Text(
+                    'LIST PLATFORM',
+                    style: TextStyle(color: Colors.black, fontSize: 48),
+                  ),
+                ],
+              )),
+              Column(
+                children: List.generate(
+                    4,
+                    (i) => SizedBox(
+                          child: ListTile(
+                            leading: SizedBox(
+                              child: Icon(Icons.phone),
+                            ),
+                            title: Text(platforms[i]['platform']),
+                            subtitle: Column(
+                              crossAxisAlignment: CrossAxisAlignment.start,
+                              children: [
+                                Text(platforms[i]['project']),
+                                Text(platforms[i]['owner'])
+                              ],
+                            ),
+                            trailing: ButtonUser(
+                              items: platforms[i],
+                            ),
+                          ),
+                        )),
+              ),
+            ],
+          ),
+        ),
+      ]),
+      bottomNavigationBar: Footer(),
+    );
+  }
+}
+
+class ButtonUser extends StatelessWidget {
+  final Map<String, dynamic> items;
+  ButtonUser({
+    required this.items,
+    super.key,
+  });
+//todo edit platform
+  //todo tombol item
+  //todo tombol delete
+  @override
+  Widget build(BuildContext context) {
+    return Row(
+      mainAxisSize: MainAxisSize.min,
+      children: [
+        ElevatedButton(
+          onPressed: null,
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Edit',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+        ElevatedButton(
+          onPressed: () => context.go('/listplatform/listmember'),
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Member',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+      ],
+    );
+  }
+}

+ 90 - 0
lib/listtable.dart

@@ -0,0 +1,90 @@
+import 'package:flutter/material.dart';
+import 'package:namer_app/datatable.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+
+class ListTablePage extends StatelessWidget {
+  const ListTablePage({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      body: Stack(children: [
+        SingleChildScrollView(
+          child: Column(
+            children: [
+              Center(
+                  child: Row(
+                mainAxisAlignment: MainAxisAlignment.center,
+                children: [
+                  Text(
+                    'Maintenance',
+                    style: TextStyle(color: Colors.black, fontSize: 48),
+                  ),
+                ],
+              )),
+              Column(
+                children: List.generate(
+                    5,
+                    (i) => SizedBox(
+                          child: ListTile(
+                            leading: SizedBox(
+                              child: Icon(Icons.table_bar),
+                            ),
+                            title: Text(tables[i]['table']),
+                            trailing: ButtonUser(
+                              items: tables[i],
+                            ),
+                          ),
+                        )),
+              ),
+            ],
+          ),
+        ),
+      ]),
+      bottomNavigationBar: Footer(),
+    );
+  }
+}
+
+class ButtonUser extends StatelessWidget {
+  final Map<String, dynamic> items;
+  ButtonUser({
+    required this.items,
+    super.key,
+  });
+  //todo tombol item
+  @override
+  Widget build(BuildContext context) {
+    return Row(
+      mainAxisSize: MainAxisSize.min,
+      children: [
+        ElevatedButton(
+          onPressed: null,
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Backup',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+        ElevatedButton(
+          onPressed: null,
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Restore',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+      ],
+    );
+  }
+}

+ 93 - 0
lib/listuser.dart

@@ -0,0 +1,93 @@
+import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
+import 'package:namer_app/datauser.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+
+class ListUserPage extends StatelessWidget {
+  const ListUserPage({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      body: Stack(children: [
+        SingleChildScrollView(
+          child: Column(
+            children: [
+              Center(
+                  child: Row(
+                mainAxisAlignment: MainAxisAlignment.center,
+                children: [
+                  Text(
+                    'LIST USER',
+                    style: TextStyle(color: Colors.black, fontSize: 48),
+                  ),
+                ],
+              )),
+              Column(
+                children: List.generate(
+                    9,
+                    (i) => SizedBox(
+                          child: ListTile(
+                            leading: SizedBox(
+                              child: Icon(Icons.person),
+                            ),
+                            title: Text(users[i]['username']),
+                            subtitle: Text(users[i]['user']),
+                            trailing: ButtonUser(
+                              items: users[i],
+                            ),
+                          ),
+                        )),
+              ),
+            ],
+          ),
+        ),
+      ]),
+      bottomNavigationBar: Footer(),
+    );
+  }
+}
+
+class ButtonUser extends StatelessWidget {
+  final Map<String, dynamic> items;
+  ButtonUser({
+    required this.items,
+    super.key,
+  });
+
+  @override
+  Widget build(BuildContext context) {
+    return Row(
+      mainAxisSize: MainAxisSize.min,
+      children: [
+        ElevatedButton(
+          onPressed: () => context.go('/signup/listuser/edit'),
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Edit',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+        ElevatedButton(
+          //todo tombol item
+          onPressed: null, //todo delete
+          style: ElevatedButton.styleFrom(
+            backgroundColor: Colors.black,
+          ),
+          child: Text(
+            'Delete',
+            style: TextStyle(color: Colors.white),
+          ),
+        ),
+      ],
+    );
+  }
+}

+ 74 - 132
lib/login.dart

@@ -1,6 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:go_router/go_router.dart';
-import 'package:namer_app/lang.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
 
 class LoginPage extends StatelessWidget {
   const LoginPage({super.key});
@@ -8,159 +9,100 @@ class LoginPage extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     return Scaffold(
-      backgroundColor: Theme.of(context).colorScheme.primaryContainer,
-      body: Container(
-        decoration: BoxDecoration(
-            gradient: LinearGradient(
-                begin: Alignment.topCenter,
-                end: Alignment.bottomCenter,
-                colors: [
-                  Color(0xffD9D9D9),
-                  Color(0xff0F968E),
-                  Color(0xff000000)
-                ]),
-            image: DecorationImage(
-              image: AssetImage("assets/images/building.jpg"),
-              fit: BoxFit.cover,
-            )),
-        child: Column(
-          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-          children: [
-            Row(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      backgroundColor: Colors.white,
+      body: Column(
+        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+        children: [
+          Expanded(
+            child: Center(
+                child: Row(
+              mainAxisAlignment: MainAxisAlignment.center,
               children: [
-                BackButton(color: Colors.white),
-                Column(
-                  crossAxisAlignment: CrossAxisAlignment.start,
-                  children: [
-                    Text(
-                      'Kembali',
-                      style: TextStyle(color: Colors.white),
-                    ),
-                    Text(
-                      'pindai QR',
-                      style: TextStyle(color: Colors.white),
-                    ),
-                  ],
+                Text(
+                  'LOGIN',
+                  style: TextStyle(color: Colors.black, fontSize: 48),
                 ),
-                Expanded(child: Container()),
-                Lang(),
               ],
-            ),
-            Expanded(
-              child: Center(
-                  child: Row(
-                mainAxisAlignment: MainAxisAlignment.center,
-                children: [
-                  Text(
-                    'tel',
-                    style: TextStyle(color: Color(0xffFF6600), fontSize: 48),
-                  ),
-                  Text(
-                    'now',
-                    style: TextStyle(color: Color(0xffFFFFFF), fontSize: 48),
-                  ),
-                ],
-              )),
-            ),
-            Expanded(
-                child: Column(
-              children: [
-                Padding(
-                  padding: const EdgeInsets.all(8.0),
-                  child: SizedBox(
-                    width: 396,
-                    height: 51,
-                    child: TextField(
-                      decoration: InputDecoration(
-                          border: OutlineInputBorder(),
-                          focusedBorder: OutlineInputBorder(
-                              borderRadius:
-                                  BorderRadius.all(Radius.circular(12)),
-                              borderSide: BorderSide(color: Colors.white)),
-                          enabledBorder: OutlineInputBorder(
-                              borderRadius:
-                                  BorderRadius.all(Radius.circular(12)),
-                              borderSide: BorderSide(color: Colors.white)),
-                          labelText: 'Nama Pengguna',
-                          labelStyle: TextStyle(color: Colors.white),
-                          filled: true,
-                          fillColor: Colors.white.withOpacity(0.25)),
-                      cursorColor: Colors.white,
-                      style: TextStyle(color: Colors.white),
-                    ),
-                  ),
-                ),
-                SizedBox(
+            )),
+          ),
+          Expanded(
+              child: Column(
+            children: [
+              Padding(
+                padding: const EdgeInsets.all(8.0),
+                child: SizedBox(
                   width: 396,
                   height: 51,
                   child: TextField(
-                    obscureText: true,
                     decoration: InputDecoration(
                         border: OutlineInputBorder(),
                         focusedBorder: OutlineInputBorder(
                             borderRadius: BorderRadius.all(Radius.circular(12)),
-                            borderSide: BorderSide(color: Colors.white)),
+                            borderSide: BorderSide(color: Colors.black)),
                         enabledBorder: OutlineInputBorder(
                             borderRadius: BorderRadius.all(Radius.circular(12)),
-                            borderSide: BorderSide(color: Colors.white)),
-                        labelText: 'Kata Sandi',
-                        labelStyle: TextStyle(color: Colors.white),
+                            borderSide: BorderSide(color: Colors.black)),
+                        labelText: 'Enter Username',
+                        labelStyle: TextStyle(color: Colors.black),
                         filled: true,
                         fillColor: Colors.white.withOpacity(0.25)),
-                    cursorColor: Colors.white,
-                    style: TextStyle(color: Colors.white),
+                    cursorColor: Colors.black,
+                    style: TextStyle(color: Colors.black),
                   ),
                 ),
-                Padding(
-                  padding: const EdgeInsets.all(20.0),
-                  child: SizedBox(
-                    width: 396,
-                    height: 61,
-                    child: ElevatedButton(
-                      onPressed: () => context.go('/list'),
-                      style: ElevatedButton.styleFrom(
-                        backgroundColor: Color(0xff078C84).withOpacity(0.76),
-                        side: BorderSide(color: Colors.white),
-                        shape: RoundedRectangleBorder(
-                          borderRadius: BorderRadius.circular(12.0),
-                        ),
-                      ),
-                      child: Text(
-                        'Masuk',
-                        style: TextStyle(color: Colors.white),
+              ),
+              SizedBox(
+                width: 396,
+                height: 51,
+                child: TextField(
+                  obscureText: true,
+                  decoration: InputDecoration(
+                      border: OutlineInputBorder(),
+                      focusedBorder: OutlineInputBorder(
+                          borderRadius: BorderRadius.all(Radius.circular(12)),
+                          borderSide: BorderSide(color: Colors.black)),
+                      enabledBorder: OutlineInputBorder(
+                          borderRadius: BorderRadius.all(Radius.circular(12)),
+                          borderSide: BorderSide(color: Colors.black)),
+                      labelText: 'Enter Password',
+                      labelStyle: TextStyle(color: Colors.black),
+                      filled: true,
+                      fillColor: Colors.white.withOpacity(0.25)),
+                  cursorColor: Colors.black,
+                  style: TextStyle(color: Colors.black),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.all(20.0),
+                child: SizedBox(
+                  width: 396,
+                  height: 61,
+                  child: ElevatedButton(
+                    onPressed: () => context.go('/login/bug'),
+                    style: ElevatedButton.styleFrom(
+                      backgroundColor: Colors.black, //todo putih lage
+                      side: BorderSide(color: Colors.white),
+                      shape: RoundedRectangleBorder(
+                        borderRadius: BorderRadius.circular(12.0),
                       ),
                     ),
+                    child: Text(
+                      'Login',
+                      style: TextStyle(color: Colors.white),
+                    ),
                   ),
                 ),
-                Text(
-                  'Frisian Flag Indonesia, Tbk.',
-                  style: TextStyle(color: Colors.white),
-                ),
-              ],
-            )),
-            Padding(
-              padding: const EdgeInsets.all(8.0),
-              child: Column(
-                children: [
-                  Text('Kebijakan Privasi',
-                      style: TextStyle(
-                          fontSize: 16,
-                          decoration: TextDecoration.underline,
-                          fontWeight: FontWeight.w400,
-                          color: Colors.white,
-                          decorationColor: Colors.white)),
-                  Text('Versi 4.0.0.0',
-                      style: TextStyle(
-                        fontSize: 16,
-                        fontWeight: FontWeight.w400,
-                        color: Colors.white,
-                      ))
-                ],
               ),
-            ),
-          ],
-        ),
+            ],
+          )),
+        ],
       ),
+      bottomNavigationBar: Footer(),
     );
   }
 }

+ 105 - 147
lib/main.dart

@@ -1,14 +1,17 @@
 import 'package:flutter/material.dart';
 import 'package:go_router/go_router.dart';
-import 'package:namer_app/account.dart';
-import 'package:namer_app/data.dart';
-import 'package:namer_app/list.dart';
+import 'package:namer_app/edituser.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+import 'package:namer_app/listbug.dart';
+import 'package:namer_app/listcomment.dart';
+import 'package:namer_app/listmember.dart';
+import 'package:namer_app/listplatform.dart';
+import 'package:namer_app/listtable.dart';
+import 'package:namer_app/listuser.dart';
 import 'package:namer_app/login.dart';
-import 'package:namer_app/lang.dart';
-import 'package:namer_app/listblock.dart';
 import 'package:flutter/rendering.dart';
-import 'package:namer_app/detail.dart';
-import 'package:namer_app/search.dart';
+import 'package:namer_app/signup.dart';
 
 void main() {
   runApp(MyApp());
@@ -17,40 +20,44 @@ void main() {
 final _router = GoRouter(
   routes: [
     GoRoute(path: '/', builder: (context, state) => MyHomePage(), routes: [
-      GoRoute(
-        path: 'login',
-        builder: (context, state) => LoginPage(),
-      ),
-      GoRoute(
-        path: 'list',
-        builder: (context, state) => ListPage(),
-        routes: [
-          GoRoute(
-            path: 'listblock',
-            builder: (context, state) => ListBlockPage(),
+      GoRoute(path: 'login', builder: (context, state) => LoginPage(), routes: [
+        GoRoute(
+            path: 'bug',
+            builder: (context, state) => ListBugPage(),
             routes: [
               GoRoute(
-                  path: 'search/:type',
-                  builder: (context, state) {
-                    var item = items.firstWhere((element) =>
-                        element['type'] == state.pathParameters['type']);
-                    return SearchPage(items: item);
-                  })
-            ],
-          ),
-          GoRoute(
-              path: 'detail/:type',
-              builder: (context, state) {
-                var item = items.firstWhere((element) =>
-                    element['type'] == state.pathParameters['type']);
-                return DetailPage(items: item);
-              })
-        ],
-      ),
+                path: 'comment',
+                builder: (context, state) => ListCommentPage(),
+              )
+            ])
+      ]),
       GoRoute(
-        path: 'account',
-        builder: (context, state) => AccountPage(),
+          path: 'signup',
+          builder: (context, state) => SignupPage(),
+          routes: [
+            GoRoute(
+                path: 'listuser',
+                builder: (context, state) => ListUserPage(),
+                routes: [
+                  GoRoute(
+                    path: 'edit',
+                    builder: (context, state) => EditUserPage(),
+                  )
+                ])
+          ]),
+      GoRoute(
+        path: 'maintenance',
+        builder: (context, state) => ListTablePage(),
       ),
+      GoRoute(
+          path: 'listplatform',
+          builder: (context, state) => ListPlatformPage(),
+          routes: [
+            GoRoute(
+              path: 'listmember',
+              builder: (context, state) => ListMemberPage(),
+            )
+          ])
     ]),
   ],
 );
@@ -62,7 +69,7 @@ class MyApp extends StatelessWidget {
   Widget build(BuildContext context) {
     return MaterialApp.router(
       debugShowCheckedModeBanner: false,
-      title: 'TelNow Lat',
+      title: 'Bug Listing',
       routerConfig: _router,
     );
   }
@@ -73,122 +80,73 @@ class MyHomePage extends StatelessWidget {
   Widget build(BuildContext context) {
     debugPaintSizeEnabled = false;
     return Scaffold(
-      body: Container(
-        decoration: BoxDecoration(
-            gradient: LinearGradient(
-                begin: Alignment.topCenter,
-                end: Alignment.bottomCenter,
-                colors: [
-                  Color(0xffD9D9D9),
-                  Color(0xff0F968E),
-                  Color(0xff000000)
-                ]),
-            image: DecorationImage(
-              image: AssetImage("assets/images/building.jpg"),
-              fit: BoxFit.cover,
-            )),
-        child: Column(
-          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-          children: [
-            Row(
-              mainAxisAlignment: MainAxisAlignment.end,
-              children: [
-                Lang(),
-              ],
-            ),
-            Expanded(
-              child: Center(
-                  child: Row(
+        appBar: Header(
+          title: Text('title'),
+          appBar: AppBar(),
+          widgets: <Widget>[Icon(Icons.more_vert)],
+        ),
+        body: Container(
+          decoration: BoxDecoration(color: Colors.black.withOpacity(0.6)),
+          child: Column(
+            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+            children: [
+              Expanded(
+                child: Center(
+                    child: Row(
+                  mainAxisAlignment: MainAxisAlignment.center,
+                  children: [
+                    Text(
+                      'Welcome to Bug Tracker',
+                      style: TextStyle(
+                          color: Colors.white,
+                          fontSize: 40,
+                          fontWeight: FontWeight.bold),
+                    ),
+                  ],
+                )),
+              ),
+              Padding(
+                padding: const EdgeInsets.all(8.0),
+                child: Text(
+                  'Track, manage, and resolve bugs efficiently',
+                  style: TextStyle(color: Colors.white, fontSize: 16),
+                ),
+              ),
+              Row(
                 mainAxisAlignment: MainAxisAlignment.center,
                 children: [
-                  Text(
-                    'tel',
-                    style: TextStyle(color: Color(0xffFF6600), fontSize: 48),
+                  Padding(
+                    padding: const EdgeInsets.only(right: 10),
+                    child: ElevatedButton(
+                      onPressed: () => context.go('/signup'),
+                      style: ElevatedButton.styleFrom(
+                          side: BorderSide(color: Colors.white),
+                          backgroundColor: Colors.transparent),
+                      child: Text(
+                        'Sign Up',
+                        style: TextStyle(color: Colors.white),
+                      ),
+                    ),
                   ),
-                  Text(
-                    'now',
-                    style: TextStyle(color: Color(0xffFFFFFF), fontSize: 48),
+                  Padding(
+                    padding: const EdgeInsets.only(left: 10),
+                    child: ElevatedButton(
+                      onPressed: () => context.go('/login'),
+                      style: ElevatedButton.styleFrom(
+                        backgroundColor: Colors.black,
+                      ),
+                      child: Text(
+                        'Login',
+                        style: TextStyle(color: Colors.white),
+                      ),
+                    ),
                   ),
                 ],
-              )),
-            ),
-            Padding(
-              padding: const EdgeInsets.only(left: 180, right: 180),
-              child: Text(
-                'Silakan pindai QR terlebih dulu untuk mulai menggunakan aplikasi.',
-                softWrap: true,
-                textAlign: TextAlign.center,
-                style: TextStyle(fontSize: 16, color: Colors.white),
-              ),
-            ),
-            Expanded(
-              child: Center(child: Pindai()),
-            ),
-            Padding(
-              padding: const EdgeInsets.all(8.0),
-              child: Column(
-                children: [
-                  Text('Kebijakan Privasi',
-                      style: TextStyle(
-                          fontSize: 16,
-                          decoration: TextDecoration.underline,
-                          fontWeight: FontWeight.w400,
-                          decorationColor: Colors.white,
-                          color: Colors.white)),
-                  Text('Versi 4.0.0.0',
-                      style: TextStyle(
-                        fontSize: 16,
-                        fontWeight: FontWeight.w400,
-                        color: Colors.white,
-                      ))
-                ],
               ),
-            ),
-          ],
-        ),
-      ),
-    );
-  }
-}
-
-class Pindai extends StatelessWidget {
-  const Pindai({
-    super.key,
-  });
-
-  @override
-  Widget build(BuildContext context) {
-    return SizedBox(
-        width: 257,
-        height: 96,
-        child: ElevatedButton(
-          onPressed: () => context.go('/login'),
-          style: ElevatedButton.styleFrom(
-            backgroundColor: Color(0xff078C84).withOpacity(0.76),
-            side: BorderSide(color: Colors.white),
-            shape: RoundedRectangleBorder(
-              borderRadius: BorderRadius.circular(12.0),
-            ),
-          ),
-          child: Row(
-            mainAxisAlignment: MainAxisAlignment.center,
-            children: [
-              Text(
-                'Pindai QR',
-                style: TextStyle(color: Colors.white, fontSize: 20),
-              ),
-              Container(
-                width: 5,
-              ),
-              Image.asset(
-                'assets/images/scan_icon_183865.png',
-                width: 32,
-                height: 32,
-                fit: BoxFit.cover,
-                color: Color(0xffFFFFFF),
-              )
+              Expanded(child: Container())
             ],
           ),
-        ));
+        ),
+        bottomNavigationBar: Footer());
   }
 }

+ 0 - 289
lib/search.dart

@@ -1,289 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:date_format/date_format.dart';
-import 'package:dotted_line/dotted_line.dart';
-
-var date = formatDate(DateTime.now(), [HH, ':', nn]);
-
-class SearchPage extends StatelessWidget {
-  final Map<String, dynamic> items;
-  SearchPage({super.key, required this.items});
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-      appBar: AppBar(
-        backgroundColor: Colors.white,
-        automaticallyImplyLeading: false,
-        elevation: 0,
-        toolbarHeight: 44,
-        title: Text(
-          date,
-          style: TextStyle(color: Color(0xff303336), fontSize: 15),
-        ),
-        actions: [
-          Icon(
-            Icons.signal_cellular_alt,
-            color: Color(0xff303336),
-          ),
-          Icon(
-            Icons.wifi,
-            color: Color(0xff303336),
-          ),
-          RotatedBox(
-            quarterTurns: -3,
-            child: Icon(
-              Icons.battery_std,
-              color: Color(0xff303336),
-            ),
-          )
-        ],
-      ),
-      body: SingleChildScrollView(
-        child: Column(
-          crossAxisAlignment: CrossAxisAlignment.start,
-          children: [
-            Row(
-              children: [
-                BackButton(),
-                Container(
-                  height: 44,
-                  alignment: Alignment.centerLeft,
-                  padding: EdgeInsets.symmetric(horizontal: 10),
-                  child: Text(
-                    items['type'],
-                    style: TextStyle(fontWeight: FontWeight.w500, fontSize: 17),
-                  ),
-                ),
-              ],
-            ),
-            Padding(
-              padding: const EdgeInsets.symmetric(horizontal: 10),
-              child: SizedBox(
-                width: 396,
-                height: 267.72,
-                child: gambar(items),
-              ),
-            ),
-            Container(
-              width: 396,
-              margin: EdgeInsets.all(5),
-              decoration: BoxDecoration(
-                  border: Border.all(color: Colors.black.withOpacity(0.1)),
-                  shape: BoxShape.rectangle,
-                  borderRadius: BorderRadius.circular(12)),
-              child: Column(
-                crossAxisAlignment: CrossAxisAlignment.start,
-                children: [
-                  Container(
-                    margin: EdgeInsets.all(5),
-                    child: Text(
-                      items['type'],
-                      overflow: TextOverflow.clip,
-                      style: TextStyle(
-                          fontWeight: FontWeight.w400,
-                          color: Color(0xff292D32),
-                          fontSize: 14),
-                    ),
-                  ),
-                  Padding(
-                    padding: const EdgeInsets.symmetric(horizontal: 5),
-                    child: DottedLine(),
-                  ),
-                  Container(
-                    margin: EdgeInsets.all(5),
-                    child: Text(
-                      items['longText'],
-                      overflow: TextOverflow.clip,
-                      style: TextStyle(
-                          fontWeight: FontWeight.w300,
-                          color: Color(0xff292D32),
-                          fontSize: 13),
-                    ),
-                  ),
-                ],
-              ),
-            ),
-            Container(
-              margin: EdgeInsets.all(10),
-              child: Text(
-                'Your Location',
-                style: TextStyle(fontWeight: FontWeight.w500, fontSize: 14),
-              ),
-            ),
-            Container(
-                width: 396,
-                margin: EdgeInsets.symmetric(horizontal: 10),
-                decoration: BoxDecoration(
-                    color: Color(0xff078C84).withOpacity(0.85),
-                    border: Border.all(color: Color(0xff078C84)),
-                    shape: BoxShape.rectangle,
-                    borderRadius: BorderRadius.only(
-                        topLeft: Radius.circular(12),
-                        topRight: Radius.circular(12))),
-                child: Padding(
-                    padding: const EdgeInsets.all(5),
-                    child: Column(
-                        crossAxisAlignment: CrossAxisAlignment.start,
-                        children: [
-                          Row(
-                            children: [
-                              Icon(Icons.remove),
-                              Column(
-                                crossAxisAlignment: CrossAxisAlignment.start,
-                                children: [
-                                  Text('Default Location'),
-                                  Container(
-                                    height: 5,
-                                  ),
-                                  Text('Room 331')
-                                ],
-                              )
-                            ],
-                          ),
-                        ]))),
-            Container(
-                width: 396,
-                margin: EdgeInsets.symmetric(
-                  horizontal: 10,
-                ),
-                decoration: BoxDecoration(
-                    border: Border.all(color: Colors.black.withOpacity(0.1)),
-                    shape: BoxShape.rectangle,
-                    borderRadius: BorderRadius.only(
-                        bottomLeft: Radius.circular(12),
-                        bottomRight: Radius.circular(12))),
-                child: Padding(
-                    padding: const EdgeInsets.all(5),
-                    child: Column(
-                      crossAxisAlignment: CrossAxisAlignment.start,
-                      children: [
-                        Row(
-                          children: [
-                            Icon(Icons.add),
-                            Column(
-                              crossAxisAlignment: CrossAxisAlignment.start,
-                              children: [
-                                Text('I moved to other location'),
-                                Container(
-                                  width: 350,
-                                  margin: EdgeInsets.symmetric(vertical: 5),
-                                  decoration: BoxDecoration(
-                                      border: Border.all(
-                                          color: Colors.black.withOpacity(0.1)),
-                                      shape: BoxShape.rectangle,
-                                      borderRadius: BorderRadius.circular(12)),
-                                  child: Row(
-                                    children: [
-                                      Padding(
-                                        padding: const EdgeInsets.symmetric(
-                                            horizontal: 5),
-                                        child: Icon(
-                                          Icons.location_on_outlined,
-                                          color: Color(0xffD91B1B),
-                                        ),
-                                      ),
-                                      Text(
-                                        'Where are you?',
-                                        style: TextStyle(
-                                            fontWeight: FontWeight.w300,
-                                            fontSize: 13,
-                                            color: Color(0xff292D32)
-                                                .withOpacity(0.5)),
-                                      )
-                                    ],
-                                  ),
-                                )
-                              ],
-                            )
-                          ],
-                        ),
-                      ],
-                    ))),
-            Container(
-              margin: EdgeInsets.all(10),
-              child: Text(
-                'Add Image',
-                style: TextStyle(fontWeight: FontWeight.w500, fontSize: 14),
-              ),
-            ),
-            Container(
-              margin: EdgeInsets.symmetric(horizontal: 10),
-              child: Row(
-                children: [
-                  Text(
-                    'You can send us a picture as a clue or something..',
-                    style: TextStyle(
-                        fontWeight: FontWeight.w300,
-                        fontSize: 12,
-                        color: Color(0xff292D32).withOpacity(0.85)),
-                  ),
-                  Spacer(),
-                  Icon(
-                    Icons.photo_camera,
-                    color: Color(0xff078C84),
-                  )
-                ],
-              ),
-            ),
-            Divider(),
-            Container(
-              width: 394,
-              margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
-              decoration: BoxDecoration(
-                  border: Border.all(color: Colors.black.withOpacity(0.1)),
-                  shape: BoxShape.rectangle,
-                  borderRadius: BorderRadius.circular(12)),
-              child: Padding(
-                padding: const EdgeInsets.all(5),
-                child: Row(
-                  children: [
-                    Icon(Icons.edit),
-                    Container(
-                      width: 5,
-                    ),
-                    Text('Add note..',
-                        style: TextStyle(
-                            fontWeight: FontWeight.w300,
-                            fontSize: 13,
-                            color: Color(0xff292D32).withOpacity(0.5))),
-                  ],
-                ),
-              ),
-            ),
-            Container(
-              margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
-              width: 396,
-              height: 51,
-              child: ElevatedButton(
-                  style: ElevatedButton.styleFrom(
-                    backgroundColor: Color(0xff078C84),
-                  ),
-                  onPressed: () {},
-                  child: Text(
-                    'Send Request',
-                    style: TextStyle(
-                        fontWeight: FontWeight.w600,
-                        fontSize: 16,
-                        color: Colors.white),
-                  )),
-            )
-          ],
-        ),
-      ),
-    );
-  }
-
-  Container gambar(items) {
-    return Container(
-      decoration: BoxDecoration(
-          border: Border.all(color: items['color']),
-          borderRadius: BorderRadius.all(Radius.circular(20)),
-          color: items['color'].withOpacity(0.4)),
-      padding: const EdgeInsets.all(5.0),
-      child: Image.asset(
-        items['image'],
-        fit: BoxFit.cover,
-      ),
-    );
-  }
-}

+ 128 - 0
lib/signup.dart

@@ -0,0 +1,128 @@
+import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
+import 'package:namer_app/footer.dart';
+import 'package:namer_app/header.dart';
+
+class SignupPage extends StatelessWidget {
+  const SignupPage({super.key});
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: Header(
+        title: Text('title'),
+        appBar: AppBar(),
+        widgets: <Widget>[Icon(Icons.more_vert)],
+      ),
+      backgroundColor: Colors.white,
+      body: Column(
+        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+        children: [
+          Center(
+              child: Row(
+            mainAxisAlignment: MainAxisAlignment.center,
+            children: [
+              Text(
+                'SIGN UP',
+                style: TextStyle(color: Colors.black, fontSize: 48),
+              ),
+            ],
+          )),
+          Column(
+            children: [
+              Padding(
+                padding: const EdgeInsets.all(8.0),
+                child: SizedBox(
+                  width: 396,
+                  // height: 51,
+                  child: TextField(
+                    decoration: InputDecoration(
+                        border: OutlineInputBorder(),
+                        focusedBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        enabledBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        labelText: 'Enter Username',
+                        labelStyle: TextStyle(color: Colors.black),
+                        filled: true,
+                        fillColor: Colors.white.withOpacity(0.25)),
+                    cursorColor: Colors.black,
+                    style: TextStyle(color: Colors.black),
+                  ),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.all(8.0),
+                child: SizedBox(
+                  width: 396,
+                  // height: 51,
+                  child: TextField(
+                    decoration: InputDecoration(
+                        border: OutlineInputBorder(),
+                        focusedBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        enabledBorder: OutlineInputBorder(
+                            borderRadius: BorderRadius.all(Radius.circular(12)),
+                            borderSide: BorderSide(color: Colors.black)),
+                        labelText: 'Enter Name',
+                        labelStyle: TextStyle(color: Colors.black),
+                        filled: true,
+                        fillColor: Colors.white.withOpacity(0.25)),
+                    cursorColor: Colors.black,
+                    style: TextStyle(color: Colors.black),
+                  ),
+                ),
+              ),
+              SizedBox(
+                width: 396,
+                // height: 51,
+                child: TextField(
+                  obscureText: true,
+                  decoration: InputDecoration(
+                      border: OutlineInputBorder(),
+                      focusedBorder: OutlineInputBorder(
+                          borderRadius: BorderRadius.all(Radius.circular(12)),
+                          borderSide: BorderSide(color: Colors.black)),
+                      enabledBorder: OutlineInputBorder(
+                          borderRadius: BorderRadius.all(Radius.circular(12)),
+                          borderSide: BorderSide(color: Colors.black)),
+                      labelText: 'Enter Password',
+                      labelStyle: TextStyle(color: Colors.black),
+                      filled: true,
+                      fillColor: Colors.white.withOpacity(0.25)),
+                  cursorColor: Colors.black,
+                  style: TextStyle(color: Colors.black),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.all(20.0),
+                child: SizedBox(
+                  width: 396,
+                  height: 61,
+                  child: ElevatedButton(
+                    onPressed: () => context.go('/signup/listuser'),
+                    style: ElevatedButton.styleFrom(
+                      backgroundColor: Colors.black, //todo putih lage
+                      side: BorderSide(color: Colors.white),
+                      shape: RoundedRectangleBorder(
+                        borderRadius: BorderRadius.circular(12.0),
+                      ),
+                    ),
+                    child: Text(
+                      'Save',
+                      style: TextStyle(color: Colors.white),
+                    ),
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ],
+      ),
+      bottomNavigationBar: Footer(),
+    );
+  }
+}