[dart] s

Viewer

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

Editor

You can edit this paste and save as new:


File Description
  • s
  • Paste Code
  • 10 Dec-2023
  • 4.09 Kb
You can Share it: