Qries

Subscribe Us

Advertisement

CRUD Operation

 CRUD Operation:


import 'package:flutter/material.dart';

import 'package:cloud_firestore/cloud_firestore.dart';
void main() {
  runApp(MyApp());
}


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MyHome(),
    );
  }
}


class MyHome extends StatefulWidget {
  @override
  _MyHomeState createState() => _MyHomeState();
}


class _MyHomeState extends State<MyHome> {
  final db = Firestore.instance;
  String task;


  void showdialog(bool isUpdate, DocumentSnapshot ds) {
    GlobalKey<FormState> formkey = GlobalKey<FormState>();
    showDialog(
        context: context,
        builder: (context) {
          return AlertDialog(
            backgroundColor: Colors.lightGreen.shade50,
            title: isUpdate ? Text("Update Data") : Text("Add Data"),
            content: Form(
              key: formkey,
              autovalidate: true,
              child: TextFormField(
                autofocus: true,
                decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: "Data",
                ),
                validator: (_val) {
                  if (_val.isEmpty) {
                    return "Can't Be Empty";
                  } else {
                    return null;
                  }
                },
                onChanged: (_val) {
                  task = _val;
                },
              ),
            ),
            actions: <Widget>[
              RaisedButton(
                color: Colors.red,
                onPressed: () {
                  if (isUpdate) {
                    db
                        .collection("tasks")
                        .document(ds.documentID)
                        .updateData({"task": task, "time": DateTime.now()});
                  } else {
                    db
                        .collection("tasks")
                        .add({"task": task, "time": DateTime.now()});
                  }
                  Navigator.pop(context);
                },
                child: Text("Add"),
              ),
            ],
          );
        });
  }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("CRUD Operation"),
      ),
      backgroundColor: Colors.yellow.shade50,
      floatingActionButton: FloatingActionButton(
        onPressed: () => showdialog(false, null),
        child: Icon(Icons.add),
      ),
      body: StreamBuilder<QuerySnapshot>(
        stream: db.collection("tasks").orderBy("time").snapshots(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return ListView.builder(
              itemCount: snapshot.data.documents.length,
              itemBuilder: (context, index) {
                DocumentSnapshot ds = snapshot.data.documents[index];
                return Container(
                  child: ListTile(
                    title: Text(
                      ds["task"],
                      style: TextStyle(
                        fontSize: 22,
                      ),
                    ),
                    ////delete
                    trailing: IconButton(
                      icon: Icon(
                        Icons.delete,
                        color: Colors.red.shade700,
                      ),
                      onPressed: () {
                        db.collection("tasks").document(ds.documentID).delete();
                      },
                    ),
                    // onLongPress: () {
                    //   db.collection("tasks").document(ds.documentID).delete();
                    // },
                    /////update
                    leading: IconButton(
                      icon: Icon(
                        Icons.edit,
                        color: Colors.green.shade900,
                      ),
                      onPressed: () {
                        showdialog(true, ds);
                      },
                    ),
                    // onTap: () {
                    //   showdialog(true, ds);
                    // },
                  ),
                );
              },
            );
          } else if (snapshot.hasError) {
            return CircularProgressIndicator();
          } else {
            return CircularProgressIndicator();
          }
        },
      ),
    );
  }
}

Post a Comment

0 Comments