CRUD Flutter Aplication With MySQL (Part 1 of 2)
CRUD Flutter Aplication With MySQL (Part 1 of 2)
dart
import 'dart:convert';
import 'package:app_produk/tambah_produk.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
@override
State<HalamanProduk> createState() => _HalamanProdukState();
}
void initState() {
_getdata();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Halaman Produk'),
backgroundColor: Colors.deepOrange,
),
body: _loading
? Center(
child: CircularProgressIndicator(),
)
: ListView.builder(
itemCount: _listdata.length,
itemBuilder: ((context, index) {
return Card(
child: ListTile(
title: Text(_listdata[index]['nama_produk']),
subtitle:
Text(_listdata[index]['harga_produk']),
),
);
}),
),
floatingActionButton: FloatingActionButton(
child: Text(
'+',
style: TextStyle(fontSize: 24),
),
backgroundColor: Colors.deepOrange,
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) =>
TambahProduk()));
}),
);
}
}
2. tambah_produk.dart
import 'package:app_produk/halaman_produk.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
@override
State<TambahProduk> createState() => _TambahProdukState();
}
.post(Uri.parse('http://192.168.0.120/api_produk/create.php'),
body: {
'nama_produk': nama_produk.text,
'harga_produk': harga_produk.text,
});
if (respon.statusCode == 200) {
return true;
}
return false;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Tambah Produk'),
backgroundColor: Colors.deepOrange,
),
body: Form(
key: formKey,
child: Container(
padding: EdgeInsets.all(20),
child: Column(
children: [
TextFormField(
controller: nama_produk,
decoration: InputDecoration(
hintText: 'Nama Produk',
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
)),
validator: (value) {
if (value!.isEmpty) {
return "Nama produk tidak boleh kosong!";
}
},
),
SizedBox(height: 10),
TextFormField(
controller: harga_produk,
decoration: InputDecoration(
hintText: 'Harga Produk',
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
)),
validator: (value) {
if (value!.isEmpty) {
return "Harga produk tidak boleh kosong!";
}
},
),
SizedBox(height: 10),
ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.deepOrange,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
)),
onPressed: () {
if (formKey.currentState!.validate()) {
_simpan().then((value) {
if (value) {
final snackBar = SnackBar(
content: const Text('Data berhasil
disimpan'),
);
ScaffoldMessenger.of(context)
.showSnackBar(snackBar);
} else {
final snackBar = SnackBar(
content: const Text('Data gagal
disimpan'),
);
ScaffoldMessenger.of(context)
.showSnackBar(snackBar);
}
});
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: ((context) =>
HalamanProduk())),
(route) => false);
}
},
child: Text('Simpan'))
],
),
)),
);
}
}