images Upload:

Code:

Upload.dart

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:gallery_app/home.dart';
import 'package:image_picker/image_picker.dart';
// import 'package:firebase_storage/firebase_storage.dart';
// import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:toast/toast.dart';

class Upload extends StatefulWidget {
  @override
  _UploadState createState() => _UploadState();
}

class _UploadState extends State<Upload> {
  File _image;
  final picker = ImagePicker();
  String downloadURL;
  bool isLoading = false;

  TextEditingController _titleEditingController = TextEditingController();
  TextEditingController _messageEditingController = TextEditingController();

  _imgFromCamera() async {
    final PickedFile pickedFile =
        await picker.getImage(source: ImageSource.camera);

    setState(() {
      if (pickedFile != null) {
        _image = File(pickedFile.path);
      } else {
        print('No image selected.');
      }
    });
  }

  _imgFromGallery() async {
    final PickedFile pickedFile =
        await picker.getImage(source: ImageSource.gallery);

    setState(() {
      if (pickedFile != null) {
        _image = File(pickedFile.path);
      } else {
        print('No image selected.');
      }
    });
  }

  void _showPicker(context) {
    showModalBottomSheet(
        context: context,
        builder: (BuildContext bc) {
          return SafeArea(
            child: Container(
              child: new Wrap(
                children: <Widget>[
                  new ListTile(
                      leading: new Icon(Icons.photo_library),
                      title: new Text('Photo Library'),
                      onTap: () {
                        _imgFromGallery();
                        Navigator.of(context).pop();
                      }),
                  new ListTile(
                    leading: new Icon(Icons.photo_camera),
                    title: new Text('Camera'),
                    onTap: () {
                      _imgFromCamera();
                      Navigator.of(context).pop();
                    },
                  ),
                ],
              ),
            ),
          );
        });
  }

/////////Store Data
  uploadStatus() async {
    setState(() {
      isLoading = true;
    });

    // StorageReference storageReference =
    //     await FirebaseStorage().ref().child("images");
    // StorageUploadTask storageUploadTask = await storageReference
    //     .child("image" + DateTime.now().toIso8601String())
    //     .putFile(_image);
    // StorageTaskSnapshot snapshot = await storageUploadTask.onComplete;
    // downloadURL = await snapshot.ref.getDownloadURL();
    // Toast.show("Image Uploaded", context);
    // print("downloadURL $downloadURL");

    // await FirebaseFirestore.instance.collection("images").add({
    //   "title": _titleEditingController.text,
    //   "message": _messageEditingController.text,
    //   "imageURL": downloadURL,
    //   "Time": DateTime.now(),
    // });
    // Navigator.pushReplacement(
    //     context, MaterialPageRoute(builder: (context) => HomePage()));

    setState(() {
      isLoading = false;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: <Widget>[
          SizedBox(
            height: 15,
          ),
          RaisedButton(
            child: Text("Select Imaage"),
            onPressed: () {
              _showPicker(context);
            },
          ),
          SizedBox(
            height: 10,
          ),

          Center(
            child: GestureDetector(
              onTap: () {
                _showPicker(context);
              },

              /////Display Image
              child: _image != null
                  ? Card(
                      child: Image.file(
                        _image,
                        height: 260,
                        width: 380,
                        fit: BoxFit.cover,
                      ),
                    )
                  : Container(
                      child: Text(
                        "No Image Selected",
                        style: TextStyle(
                          color: Colors.red.shade600,
                          fontSize: 20,
                        ),
                      ),
                    ),
            ),
          ),

          //////Text field
          Container(
            // margin: EdgeInsets.all(17),
            child: Column(
              children: [
                TextFormField(
                  controller: _titleEditingController,
                  validator: (value) {
                    if (value.isEmpty) {
                      return 'Please enter a Title';
                    }
                    return null;
                  },
                  decoration: InputDecoration(
                    hintText: "Title",
                    border: OutlineInputBorder(),
                  ),
                ),
                SizedBox(
                  height: 8,
                ),
                TextFormField(
                  controller: _messageEditingController,
                  minLines: 3,
                  maxLines: 10,
                  decoration: InputDecoration(
                    hintText: "Message",
                    border: OutlineInputBorder(),
                  ),
                ),
              ],
            ),
          ),
          //////Upload Button
          RaisedButton(
            child: Text("Upload"),
            onPressed: () {
              uploadStatus();
            },
          ),
        ],
      ),
    );
  }
}

home.dart
import 'package:flutter/material.dart';
import 'package:gallery_app/images.dart';
import 'package:gallery_app/upload.dart';

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage>
    with SingleTickerProviderStateMixin {
  var width;
  TabController _tabController;

  @override
  void initState() {
    super.initState();
    _tabController = TabController(length: 2, vsync: this);
  }

  @override
  Widget build(BuildContext context) {
    width = MediaQuery.of(context).size.width;
    return Scaffold(
      appBar: AppBar(
        title: Text("Gallery App"),
        backgroundColor: Colors.pink,
        bottom: PreferredSize(
          child: Container(
            child: TabBar(
              indicator: UnderlineTabIndicator(
                borderSide: BorderSide(
                  width: 5,
                  color: Colors.white70,
                ),
              ),
              tabs: [
                Container(
                  width: width * 0.4,

                  child: Tab(
                    child: Text(
                      "Images",
                      style: TextStyle(
                        fontSize: 17,
                      ),
                    ),
                  ),
                  // SizedBox(width: 49),
                ),
                Container(
                  width: width * 0.4,
                  child: Tab(
                    child: Text(
                      "Upload",
                      style: TextStyle(
                        fontSize: 17,
                      ),
                    ),
                  ),
                ),
                // Container(width: width * 0.2, child: Tab(text: "Baseball")),
                // Container(width: width * 0.2, child: Tab(text: "Basketball")),
                // Container(width: width * 0.2, child: Tab(text: "Kabaddi")),
              ],
              controller: _tabController,
              isScrollable: true,
            ),
          ),
          preferredSize: Size.fromHeight(60.0),
        ),
      ),
      body: TabBarView(
        children: [
          // Display(),
          Upload(),
        ],
        controller: _tabController,
      ),
    );
  }
}

images.dart
// import 'package:flutter/material.dart';
// import 'dart:io';
// import 'package:firebase_core/firebase_core.dart';
// import 'package:cloud_firestore/cloud_firestore.dart';
// // import 'package:flutter_downloader/flutter_downloader.dart';

// class Display extends StatefulWidget {
//   @override
//   _DisplayState createState() => _DisplayState();
// }

// class _DisplayState extends State<Display> {
//   File _image;
//   String downloadURL;

//   donloadimage() async {
//     // final id = await FlutterDownloader.enqueue(
//     //   url:
//     //       "https://firebasestorage.googleapis.com/v0/b/storage-3cff8.appspot.com/o/2020-05-29%2007-18-34.mp4?alt=media&token=841fffde-2b83-430c-87c3-2d2fd658fd41",
//     //   savedDir: _image.path,
//     //   fileName: "download",
//     //   showNotification: true,
//     //   openFileFromNotification: true,
//     // );
//   }

//   @override
//   void initState() {
//     super.initState();
//     Firebase.initializeApp().whenComplete(() {
//       print("completed");
//       setState(() {});
//     });
//   }

//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       body: StreamBuilder(
//         stream: FirebaseFirestore.instance.collection("images").snapshots(),
//         builder: (context, snapshot) {
//           return !snapshot.hasData
//               ? Center(
//                   child: CircularProgressIndicator(),
//                 )
//               : ListView.builder(
//                   itemCount: snapshot.data.documents.length,
//                   itemBuilder: (context, index) {
//                     DocumentSnapshot alldata = snapshot.data.documents[index];
//                     return Column(
//                       children: [
//                         Card(
//                           child: ListTile(
//                             leading: Image.network(alldata["imageURL"]),
//                             title: Text(alldata["title"]),
//                             subtitle: Text(alldata["message"]),
//                             trailing: RaisedButton(
//                               child: Text("Download"),
//                               onPressed: () async {
//                                 donloadimage();
//                               },
//                             ),
//                           ),
//                         ),
//                       ],
//                     );
//                   },
//                 );
//         },
//       ),
//     );
//   }
// }