Untitled
unknown
plain_text
2 years ago
9.0 kB
3
Indexable
//main.dart import 'package:flutter/material.dart'; import 'cart.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Unit 3C Cart', theme: ThemeData( primarySwatch: Colors.blue, ), home: CartPage(), ); } } //cart.dart import 'package:flutter/material.dart'; import 'pembayaran.dart'; class CartPage extends StatefulWidget { @override _CartPageState createState() => _CartPageState(); } class _CartPageState extends State<CartPage> { TextEditingController searchController = TextEditingController(); List<String> selectedLanguages = [ 'Java ', 'HTML Dasar', 'Phyton', 'Golang', 'C#', 'C++', 'Basis Data', 'WireSharp' ]; List<String> filteredLanguages = []; void removeLanguage(String language) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text('Hapus $language?'), content: Text( 'Apakah Anda yakin ingin menghapus $language dari keranjang belanja?'), actions: [ TextButton( child: Text('Tidak'), onPressed: () { Navigator.of(context).pop(); }, ), TextButton( child: Text('Ya'), onPressed: () { setState(() { selectedLanguages.remove(language); }); Navigator.of(context).pop(); }, ), ], ); }, ); } void checkout() { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text('Checkout'), content: Text('Apakah Anda yakin ingin checkout?'), actions: [ TextButton( child: Text('Tidak'), onPressed: () { Navigator.of(context).pop(); }, ), TextButton( child: Text('Ya'), onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => PaymentPage()), ); }, ), ], ); }, ); } void filterLanguages(String query) { filteredLanguages.clear(); if (query.isNotEmpty) { selectedLanguages.forEach((language) { if (language.toLowerCase().contains(query.toLowerCase())) { filteredLanguages.add(language); } }); } else { filteredLanguages.addAll(selectedLanguages); } setState(() {}); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Keranjang Belanja'), backgroundColor: Colors.green, ), body: Column( children: [ TextField( controller: searchController, decoration: InputDecoration( labelText: 'Cari', prefixIcon: Icon(Icons.search), ), onChanged: filterLanguages, ), Expanded( child: ListView.builder( itemCount: filteredLanguages.length, itemBuilder: (BuildContext context, int index) { return Card( elevation: 4, margin: EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: ListTile( leading: Image.asset( 'assets/images/${filteredLanguages[index].toLowerCase()}.png', width: 50, height: 50, ), title: Text(filteredLanguages[index]), subtitle: Text('\$50 | Rating: 4.5/5'), trailing: Row( mainAxisSize: MainAxisSize.min, children: [ IconButton( icon: Icon(Icons.delete), onPressed: () { removeLanguage(filteredLanguages[index]); }, ), ElevatedButton( child: Text('Checkout'), onPressed: () { checkout(); }, style: ButtonStyle( backgroundColor: MaterialStateProperty.all<Color>(Colors.green), ), ), ], ), ), ); }, ), ), ], ), ); } } //pembayaran.dart import 'package:flutter/material.dart'; import 'cart.dart'; class PaymentPage extends StatefulWidget { @override _PaymentPageState createState() => _PaymentPageState(); } class _PaymentPageState extends State<PaymentPage> { String selectedPaymentMethod = ''; void selectPaymentMethod(String paymentMethod) { setState(() { selectedPaymentMethod = paymentMethod; }); } void pay() { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text('Pembayaran Berhasil'), content: Text('Pembayaran telah berhasil.'), actions: [ TextButton( child: Text('OK'), onPressed: () { Navigator.pushAndRemoveUntil( context, MaterialPageRoute(builder: (context) => CartPage()), (Route<dynamic> route) => false, ); }, ), ], ); }, ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Pembayaran'), ), body: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( 'Pilih Metode Pembayaran', style: TextStyle( fontSize: 24.0, fontWeight: FontWeight.bold, ), ), SizedBox(height: 20.0), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ InkWell( onTap: () { selectPaymentMethod('E-Wallet'); }, child: Container( width: 150.0, height: 150.0, color: selectedPaymentMethod == 'E-Wallet' ? Colors.green : Colors.grey[300], child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.account_balance_wallet, size: 64.0, ), SizedBox(height: 10.0), Text( 'E-Wallet', style: TextStyle( fontSize: 20.0, fontWeight: FontWeight.bold, ), ), ], ), ), ), SizedBox(width: 20.0), InkWell( onTap: () { selectPaymentMethod('Bank'); }, child: Container( width: 150.0, height: 150.0, color: selectedPaymentMethod == 'Bank' ? Colors.green : Colors.grey[300], child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.account_balance, size: 64.0, ), SizedBox(height: 10.0), Text( 'Bank', style: TextStyle( fontSize: 20.0, fontWeight: FontWeight.bold, ), ), ], ), ), ), ], ), SizedBox(height: 20.0), ElevatedButton( child: Text('Bayar'), onPressed: selectedPaymentMethod != '' ? () { pay(); } : null, ), ], ), ); } }
Editor is loading...