aplikasi CRUD di web https://idx.dev/ dengan dart flutter
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class Item {
String name;
Item(this.name);
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'CRUD Flutter Web',
theme: ThemeData(primarySwatch: Colors.blue),
home: const HomePage(),
debugShowCheckedModeBanner: false,
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final List<Item> items = [];
final TextEditingController controller = TextEditingController();
int? editingIndex;
void addItem() {
if (controller.text.isEmpty) return;
setState(() {
if (editingIndex == null) {
items.add(Item(controller.text));
} else {
items[editingIndex!] = Item(controller.text);
editingIndex = null;
}
controller.clear();
});
}
void editItem(int index) {
setState(() {
controller.text = items[index].name;
editingIndex = index;
});
}
void deleteItem(int index) {
setState(() {
items.removeAt(index);
if (editingIndex == index) {
controller.clear();
editingIndex = null;
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Flutter CRUD Web'),
),
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
children: [
TextField(
controller: controller,
decoration: InputDecoration(
hintText: 'Masukkan nama item',
suffixIcon: IconButton(
icon: const Icon(Icons.save),
onPressed: addItem,
),
),
onSubmitted: (_) => addItem(),
),
const SizedBox(height: 20),
Expanded(
child: items.isEmpty
? const Center(child: Text('Belum ada data'))
: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(items[index].name),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
icon: const Icon(Icons.edit),
onPressed: () => editItem(index),
),
IconButton(
icon: const Icon(Icons.delete),
onPressed: () => deleteItem(index),
),
],
),
);
},
),
),
],
),
),
);
}
}
Sumber : Chatgpt.com
Komentar
Posting Komentar