Professional Documents
Culture Documents
Laporan Uts Flutter Dan Android Studio - 1815051088
Laporan Uts Flutter Dan Android Studio - 1815051088
Tugas Laporan
Disusun Oleh :
SINGARAJA
2020
Tampilan Splash Screen
2. Tampilan Daftar Belanjaan (Cart)
3. Tampilan Input data Belanjaan
4. Tampilan Hasil Input Data Belanjaan
SOURCE CODE :
1. Main.dart
import 'package:shoppingbag/splashscreen.dart';
import 'package:flutter/material.dart';
import './components/dashboard.dart';
import './components/product_lists.dart';
import './components/add_new_item.dart';
import './models/cart.dart';
void _resetCarts() {
setState(() {
_carts.clear();
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Daftar Belanjaan"),
actions: <Widget>[
FlatButton(child: Icon(Icons.clear, color: Colors.white,), onPressed: () =>
_resetCarts(),)
],
),
body: SingleChildScrollView(
child: Column(
children: <Widget>[
Dashboard(_carts),
ProductList(_carts),
],
),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () => _openModal(context),
),
);
}
}
2. Splashscreen.dart
import 'package:flutter/material.dart';
import 'dart:async';
import 'main.dart';
void initState(){
super.initState();
splashscreenStart();
}
splashscreenStart() async{
var duration = const Duration(seconds: 3);
return Timer(duration, (){
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Home()),
);
});
}
@override
Widget build(BuildContext context){
return Scaffold(
backgroundColor: Colors.blue,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Icon(
Icons.school,
size: 100.0,
color: Colors.white,
),
SizedBox(height: 24.0,),
Text("UNDIKSHA",
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 30.0,
),
),
],
),
),
);
}
}
3. dashboard.dart
import 'package:flutter/material.dart';
import '../models/cart.dart';
@override
Widget build(BuildContext context) {
return Card(
elevation: 6,
margin: EdgeInsets.all(10),
child: Padding(
padding: EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Column(children: <Widget>[
Text("Total Item", style: Theme.of(context).textTheme.title,),
SizedBox(height: 4,),
Text(totalItem.toString() + " pcs", style: TextStyle(fontSize: 25,
fontWeight: FontWeight.bold),),
],),
Column(children: <Widget>[
Text("Total Belanja", style: Theme.of(context).textTheme.title,),
SizedBox(height: 4,),
Text(totalPrice.toStringAsFixed(0), style: TextStyle(fontSize: 25,
fontWeight: FontWeight.bold),)
],)
],
),
),
);
}
}
4. cart.dart
import 'package:flutter/foundation.dart';
class Cart {
final String id;
final String title;
final double harga;
final int qty;
Cart({
@required this.id,
@required this.title,
@required this.harga,
@required this.qty
});
}
5. product_lists.dart
import 'package:flutter/material.dart';
import '../models/cart.dart';
ProductList(this.carts);
@override
Widget build(BuildContext context) {
return Container(
height: 400,
child: carts.isEmpty ? Column(children: <Widget>[
Text(
"No Transaction Data",
style: Theme.of(context).textTheme.title,
),
],): ListView.builder(
itemBuilder: (context, index) {
return Card(
child: Row(
children: <Widget>[
Container(
margin: EdgeInsets.symmetric(vertical: 10, horizontal: 15),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(
color: Theme.of(context).primaryColor, width: 2)),
child: Text(
carts[index].qty.toString(),
style: TextStyle(
color: Theme.of(context).primaryColor,
fontWeight: FontWeight.bold,
fontSize: 20
),
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(carts[index].title, style:
Theme.of(context).textTheme.title,),
Text('Harga: Rp' + carts[index].harga.toStringAsFixed(0), style:
TextStyle(fontSize: 12, color: Colors.grey),),
],
)
],
),
);
},
itemCount: carts.length,
),
);
}
}
6. add_new_item.dart
import 'package:flutter/material.dart';
@override
_AddNewItemState createState() => _AddNewItemState();
}
void saveNewItem() {
final title = titleController.text;
final harga = hargaController.text;
final qty = int.parse(qtyController.text);
@override
Widget build(BuildContext context) {
return Card(
child: Container(
padding: EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
TextField(
decoration: InputDecoration(labelText: 'Nama Barang'),
controller: titleController,
),
TextField(
decoration: InputDecoration(labelText: 'Harga'),
controller: hargaController,
keyboardType: TextInputType.number,
),
TextField(
decoration: InputDecoration(labelText: 'Qty'),
controller: qtyController,
keyboardType: TextInputType.number,
),
FlatButton(
child: Text('Tambah'),
onPressed: saveNewItem,
textColor: Colors.blueAccent,
)
],
),
),
);
}
}
Link Github :
https://github.com/mariomartin134/UTS-Flutter-Shopping-Bag.git
Link YouTube :
https://www.youtube.com/watch?v=DrAQhuF5UPA