Untitled

 avatar
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...