Data Added in Database with Sqflite in Flutter

 import "dart:developer";

import "package:flutter/material.dart";
import "package:wslc_database/10th_April_2024_Wednesday/Widgets/uihelper.dart";
import "package:wslc_database/Database/dbhelper.dart";

void main() {
runApp(const MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Add Screens database",
debugShowCheckedModeBanner: false,
theme: ThemeData(
appBarTheme: const AppBarTheme(
backgroundColor: Colors.grey,
centerTitle: true,
),
),
home: const AddScreen(),
);
}
}

class AddScreen extends StatefulWidget {
const AddScreen({super.key});

@override
State<AddScreen> createState() {
return AddScreenState();
}
}

class AddScreenState extends State<AddScreen> {
TextEditingController titleController = TextEditingController();
TextEditingController descController = TextEditingController();

addData(String title, String desc) async {
if (title == "" || desc == "") {
return showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text(
"Please enter required fields",
style: TextStyle(fontWeight: FontWeight.bold),
),
actions: [
TextButton(
onPressed: () {
Navigator.pop(context);
},
child: const Text(
"Ok",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20.0),
),
),
],
);
},
);
} else {
DbHelper().addData(title, desc);
titleController.clear();
descController.clear();
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text("Data added in database"),
duration: Duration(seconds: 3),
),
);
log(title);
}
}

@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
return FocusManager.instance.primaryFocus?.unfocus();
},
child: Scaffold(
appBar: AppBar(
title: const Text(
"Add Screen",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
UiHelper.customTextFormField(
titleController,
"Enter title",
Icons.title,
),
UiHelper.customTextFormField(
descController,
"Enter Description",
Icons.description,
),
const SizedBox(height: 20.0),
ElevatedButton(
onPressed: () {
addData(titleController.text.toString(),
descController.text.toString());
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
fixedSize: const Size(200.0, 50.0),
),
child: const Text(
"Add data",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 20.0,
color: Colors.white),
),
),
],
),
),
),
);
}
}
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';

class DbHelper {
var table = "note";
var columnid = "note_id";
var columntitle = "note_title";
var columndesc = "note_desc";

Future<Database> openDb() async {
var directory = await getApplicationDocumentsDirectory();
await directory.create(recursive: true);
var path = directory.path + "notesdb.db";
return await openDatabase(
path,
version: 1,
onCreate: (db, version) {
db.execute(
"create table $table ($columnid integer primary key autoincrement, $columntitle text, $columndesc text)");
},
);
}

addData(String title, String desc) async {
var db = await openDb();
db.insert(
table,
{
columntitle: title,
columndesc: desc,
},
);
}
}

import "package:flutter/material.dart";

class UiHelper {
static customTextFormField(
TextEditingController controller, String text, IconData iconData) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 25.0, vertical: 15.0),
child: TextFormField(
controller: controller,
decoration: InputDecoration(
hintText: text,
suffixIcon: Icon(iconData),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(11.0),
),
),
),
);
}
}




Comments

Popular posts from this blog

Second GET API Calling with Bloc simple Example in Flutter

Stack Container Scrollable Card widget UI with Custom Widget

Pagination with Bloc Pattern in Flutter