[dart] a

Viewer

  1. import 'package:flutter/material.dart';
  2. import 'package:ocw/contact_service.dart';
  3. import 'package:ocw/edit_form.dart';
  4.  
  5. class HomeScreen extends StatefulWidget {
  6.   const HomeScreen({super.key});
  7.  
  8.   @override
  9.   State<HomeScreen> createState() => _HomeScreenState();
  10. }
  11.  
  12. class _HomeScreenState extends State<HomeScreen> {
  13.   //inisialisasi variabel
  14.   ContactService contactService =
  15.       ContactService(); //inisialisai class transaksi
  16.   List data = []; //digunakan untuk menampung data yang diambil
  17.   bool isLoading = true;
  18.  
  19.   @override
  20.   void initState() {
  21.     super.initState();
  22.     //menjalankan data pertama kali
  23.     getData();
  24.   }
  25.  
  26.   //memanggil data
  27.   void getData() async {
  28.     setState(() {
  29.       isLoading = true;
  30.     });
  31.  
  32.     //menggunakan method getData pada class transact ion
  33.     List getData = await contactService.getData();
  34.     setState(() {
  35.       data = getData; //reversed.toList() akan mengurutkan data DESC
  36.       isLoading = false;
  37.     });
  38.   }
  39.  
  40.   @override
  41.   Widget build(BuildContext context) {
  42.     return Scaffold(
  43.       appBar: AppBar(
  44.         title: Text('Contact Apps'),
  45.         backgroundColor: Colors.teal,
  46.       ),
  47.       body: isLoading
  48.           ? Center(
  49.               child: CircularProgressIndicator(),
  50.             )
  51.           : ListView.builder(
  52.               itemCount: data.length,
  53.               itemBuilder: (_, item) {
  54.                 return Column(
  55.                   children: [
  56.                     ListTile(
  57.                       contentPadding: EdgeInsets.only(
  58.                         top: 10,
  59.                         left: 10,
  60.                         right: 10,
  61.                       ),
  62.                       leading: CircleAvatar(
  63.                         backgroundImage: NetworkImage(
  64.                           'https://cdn.pixabay.com/photo/2016/08/08/09/17/avatar-1577909_1280.png',
  65.                         ),
  66.                         radius: 30,
  67.                       ),
  68.                       title: Text(
  69.                         '${data[item]['name']}',
  70.                         maxLines: 2,
  71.                         overflow: TextOverflow.ellipsis,
  72.                         style: TextStyle(
  73.                           fontWeight: FontWeight.bold,
  74.                         ),
  75.                       ),
  76.                       subtitle: Text(
  77.                         'Kelamin: ${data[item]['gender']} \n'
  78.                         'Phone: ${data[item]['phone']} \n'
  79.                         'Alamat: ${data[item]['address']} \n'
  80.                         'Hobi: ${data[item]['hobby']} \n',
  81.                       ),
  82.                       trailing: Row(
  83.                         mainAxisSize: MainAxisSize.min,
  84.                         children: [
  85.                           IconButton(
  86.                             onPressed: () {
  87.                               Navigator.push(
  88.                                 context,
  89.                                 MaterialPageRoute(
  90.                                   builder: (context) => EditForm(
  91.                                     data: data[item],
  92.                                   ),
  93.                                 ),
  94.                               );
  95.                             },
  96.                             icon: Icon(Icons.edit, color: Colors.blue),
  97.                           ),
  98.                           SizedBox(
  99.                             width: 8,
  100.                           ),
  101.                           IconButton(
  102.                             onPressed: () {
  103.                               contactService.deleteData(item);
  104.                               getData();
  105.                             },
  106.                             icon: Icon(Icons.delete, color: Colors.red),
  107.                           )
  108.                         ],
  109.                       ),
  110.                     ),
  111.                     Divider()
  112.                   ],
  113.                 );
  114.               },
  115.             ),
  116.       floatingActionButton: FloatingActionButton(
  117.         onPressed: () {
  118.           Navigator.pushNamed(context, '/addForm');
  119.         },
  120.         child: Icon(Icons.add),
  121.         backgroundColor: Colors.green, // Ganti warna FAB
  122.       ),
  123.     );
  124.   }
  125. }
  126.  

Editor

You can edit this paste and save as new:


File Description
  • a
  • Paste Code
  • 10 Dec-2023
  • 4.13 Kb
You can Share it: