yocky12k

tugas pertemuan 12

Dec 12th, 2023 (edited)
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 7.27 KB | None | 0 0
  1. dependencies:
  2.   flutter:
  3.     sdk: flutter
  4.   fluttertoast: ^8.2.2
  5.   convex_bottom_bar: ^3.2.0
  6.  
  7. import 'package:flutter/material.dart';
  8. import 'package:fluttertoast/fluttertoast.dart';
  9. import 'package:convex_bottom_bar/convex_bottom_bar.dart';
  10.  
  11. void main() {
  12.   runApp(MainApp());
  13. }
  14.  
  15. class MainApp extends StatelessWidget {
  16.   @override
  17.   Widget build(BuildContext context) {
  18.     return MaterialApp(
  19.       debugShowCheckedModeBanner: false,
  20.       home: HalamanPertama(),
  21.     );
  22.   }
  23. }
  24.  
  25. class HalamanPertama extends StatelessWidget {
  26.   TextEditingController username = TextEditingController();
  27.   TextEditingController password = TextEditingController();
  28.   @override
  29.   Widget build(BuildContext context) {
  30.     return Scaffold(
  31.       appBar: AppBar(
  32.         title: Text('Tugas Pertemuan 12'),
  33.       ),
  34.       body: Center(
  35.         child: Column(
  36.           mainAxisAlignment: MainAxisAlignment.center,
  37.           children: [
  38.             Text(
  39.               'Silakan login untuk mengakses halaman ini!',
  40.               style: TextStyle(
  41.                 fontSize: 15,
  42.                 fontWeight: FontWeight.bold,
  43.                 color: Colors.blue,
  44.               ),
  45.             ),
  46.             SizedBox(height: 30),
  47.             Padding(
  48.               padding: const EdgeInsets.fromLTRB(25, 0, 25, 10),
  49.               child: TextField(
  50.                 controller: username,
  51.                 decoration: InputDecoration(
  52.                   prefixIcon: Icon(Icons.person),
  53.                   labelText: 'Username',
  54.                   hintText: 'Masukkan username Anda',
  55.                   border: OutlineInputBorder(),
  56.                 ),
  57.               ),
  58.             ),
  59.             Padding(
  60.               padding: const EdgeInsets.fromLTRB(25, 0, 25, 20),
  61.               child: TextField(
  62.                 controller: password,
  63.                 obscureText: true,
  64.                 decoration: InputDecoration(
  65.                   prefixIcon: Icon(Icons.password),
  66.                   labelText: 'Password',
  67.                   hintText: 'Masukkan password Anda',
  68.                   border: OutlineInputBorder(),
  69.                 ),
  70.               ),
  71.             ),
  72.             Row(
  73.               mainAxisAlignment: MainAxisAlignment.center,
  74.               children: [
  75.                 ElevatedButton(
  76.                   onPressed: () {
  77.                     String uname = username.text;
  78.                     String pass = password.text;
  79.  
  80.                     //logika percabangan
  81.                     if (uname == 'admin' && pass == '12345') {
  82.                       //logika login sukses
  83.                       Navigator.push(
  84.                         context,
  85.                         MaterialPageRoute(builder: (context) => HalamanKedua()),
  86.                       );
  87.                       Fluttertoast.showToast(
  88.                         msg: 'Login Sukses',
  89.                         toastLength: Toast.LENGTH_LONG,
  90.                       );
  91.                     } else {
  92.                       //logika login gagal
  93.                       Fluttertoast.showToast(
  94.                         msg:
  95.                             'Login Gagal!! Silakan periksa kembali username dan password Anda',
  96.                         toastLength: Toast.LENGTH_LONG,
  97.                       );
  98.                     }
  99.                   },
  100.                   child: Text('LOGIN'),
  101.                 ),
  102.                 SizedBox(width: 20),
  103.                 ElevatedButton(
  104.                   onPressed: () {
  105.                     //logic ketika tombol di tekan
  106.                     username.clear();
  107.                     password.clear();
  108.                   },
  109.                   child: Text('RESET'),
  110.                 ),
  111.               ],
  112.             ),
  113.           ],
  114.         ),
  115.       ),
  116.     );
  117.   }
  118. }
  119.  
  120. class HalamanKedua extends StatelessWidget {
  121.   final List<dataBuah> buah = [
  122.     dataBuah(nama: 'Apel', gambar: 'images/apel.jpg'),
  123.     dataBuah(nama: 'Durian', gambar: 'images/durian.jpg'),
  124.     dataBuah(nama: 'Jeruk', gambar: 'images/jeruk.jpg'),
  125.     dataBuah(nama: 'Mangga', gambar: 'images/mangga.jpg'),
  126.     dataBuah(nama: 'Salak', gambar: 'images/salak.jpg'),
  127.     dataBuah(nama: 'Tebu', gambar: 'images/tebu.jpg'),
  128.   ];
  129.  
  130.   @override
  131.   Widget build(BuildContext context) {
  132.     return DefaultTabController(
  133.       length: 3,
  134.       child: Scaffold(
  135.         appBar: AppBar(
  136.           title: Text('Tugas Pertemuan 12'),
  137.         ),
  138.         body: TabBarView(
  139.           children: [
  140.             GridView.builder(
  141.                 gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  142.                   crossAxisCount: 3,
  143.                   crossAxisSpacing: 5.0,
  144.                   mainAxisSpacing: 5.0,
  145.                 ),
  146.                 itemCount: buah.length,
  147.                 itemBuilder: (context, index) {
  148.                   return GridItem(ambilData: buah[index]);
  149.                 }),
  150.             ListView.builder(
  151.                 itemCount: buah.length,
  152.                 itemBuilder: (context, index) {
  153.                   return ListItem(ambilData: buah[index]);
  154.                 }),
  155.             HalamanProfile(),
  156.           ],
  157.         ),
  158.         bottomNavigationBar: ConvexAppBar(
  159.           items: [
  160.             TabItem(icon: Icons.home, title: 'Beranda'),
  161.             TabItem(icon: Icons.image, title: 'Buah'),
  162.             TabItem(icon: Icons.person, title: 'Profile'),
  163.           ],
  164.         ),
  165.       ),
  166.     );
  167.   }
  168. }
  169.  
  170. class dataBuah {
  171.   final String nama;
  172.   final String gambar;
  173.   dataBuah({required this.nama, required this.gambar});
  174. }
  175.  
  176. class GridItem extends StatelessWidget {
  177.   final dataBuah ambilData;
  178.   GridItem({required this.ambilData});
  179.   @override
  180.   Widget build(BuildContext context) {
  181.     return Card(
  182.       child: Column(
  183.         children: [
  184.           Image.asset(
  185.             ambilData.gambar,
  186.             height: 100,
  187.             fit: BoxFit.cover,
  188.             width: MediaQuery.of(context).size.width,
  189.           ),
  190.           SizedBox(height: 10),
  191.           Text(ambilData.nama),
  192.         ],
  193.       ),
  194.     );
  195.   }
  196. }
  197.  
  198. class ListItem extends StatelessWidget {
  199.   final dataBuah ambilData;
  200.   ListItem({required this.ambilData});
  201.  
  202.   @override
  203.   Widget build(BuildContext context) {
  204.     return Card(
  205.       child: ListTile(
  206.         leading: CircleAvatar(
  207.           radius: 30,
  208.           backgroundImage: AssetImage(ambilData.gambar),
  209.         ),
  210.         title: Text(ambilData.nama),
  211.       ),
  212.     );
  213.   }
  214. }
  215.  
  216. class HalamanProfile extends StatelessWidget {
  217.   @override
  218.   Widget build(BuildContext context) {
  219.     return Center(
  220.       child: Column(
  221.         mainAxisAlignment: MainAxisAlignment.center,
  222.         children: [
  223.           Icon(
  224.             Icons.person,
  225.             size: 150.0,
  226.           ),
  227.           SizedBox(height: 35),
  228.           Text(
  229.             'YOCKY ANDREA',
  230.             style: TextStyle(
  231.               fontSize: 20,
  232.               fontWeight: FontWeight.bold,
  233.             ),
  234.           ),
  235.           SizedBox(height: 20),
  236.           Text('(21220522)'),
  237.           SizedBox(height: 20),
  238.           Text('SI - 5J'),
  239.           SizedBox(height: 35),
  240.           ElevatedButton(
  241.             onPressed: () {
  242.               //logic ketika tombol di tekan
  243.               Navigator.pop(context);
  244.             },
  245.             child: Text('Logout'),
  246.           ),
  247.         ],
  248.       ),
  249.     );
  250.   }
  251. }
Add Comment
Please, Sign In to add comment