Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Flutter Project

Flutter Project
GradientppBar:

GradientAppBar(
        title: Text(
            "Video"
        ),
        flexibleSpace: Container(
          decoration: BoxDecoration(
            gradient: LinearGradient(
              colors: [Color(0xff9C27B0),Color(0xffBA68C8)], stops: [0.5, 1.0],
            ),
          ),
        ),
      ),

2) CurvedNavigationBar With ViewPager

  int _currentIndex=0;
  GlobalKey _bottomNavigationKey = GlobalKey();
  PageController _pageController;

  @override
  void initState() {
    _pageController=PageController();
  }


  @override
  void dispose() {
    _pageController.dispose();
  }

CurvedNavigationBar(
        height: 55,
        index: _currentIndex,
        color: Color(0xff9C27B0),
        backgroundColor: Colors.grey[100],
        key: _bottomNavigationKey,
        items: [
          Icon(Icons.image, size: 30,color: Colors.white,),
          Icon(Icons.video_library, size: 30,color: Colors.white,),
          Icon(Icons.compare_arrows, size: 30,color: Colors.white,),
        ],
        onTap: (index) {
          setState(() {
            _currentIndex = index;
            _pageController.jumpToPage(index);
          });
        },
      ),

ViewPager in body:

PageView(
          controller: _pageController,
          onPageChanged: (index) {
            setState(() => _currentIndex = index);
          },
          children: [
            MyStoryView(),
            MyVideo(),
            MyGallery(),
          ],
        ),


3)  Let's Code For Story Page:

=> Store Gallery Images to firebase storage:

Declare Variables:


  final fb = FirebaseDatabase.instance.reference().child("MyImages");
  File image;
  String _uploadedFileURL;

//create Random id:

  String CreateCryptoRandomString([int length = 32]) {
    final Random _random = Random.secure();
    var values = List.generate(length, (i) => _random.nextInt(256));
    return base64Url.encode(values);
  }

 floatingActionButton: FloatingActionButton(
        onPressed: (){
          getImage();
        },
        backgroundColor: Colors.transparent,
        child: Icon(
          Icons.add,
          size: 40,
          color: Colors.white,
        ),
      ),

Future getImage() async {
    await ImagePicker.pickImage(source: ImageSource.gallery).then((img){
      image = img;
    });
    StorageReference storageReference = FirebaseStorage.instance
        .ref().child('new/${Path.basename(image.path)}}');

    StorageUploadTask uploadTask = storageReference.putFile(image);

    await uploadTask.onComplete;

    storageReference.getDownloadURL().then((fileURL) {
      _uploadedFileURL = fileURL;
      if(_uploadedFileURL!=null){
        dynamic key=CreateCryptoRandomString(32);
        fb.child(key).set({
          "id": key,
          "link": _uploadedFileURL,
        }).then((value) {
          ShowToastNow();
        });
      }else{
        print("url is null");
      }
    });
  }
  ShowToastNow(){
    Toast.show("Image Svaed", context, duration: Toast.LENGTH_LONG, gravity:  Toast.BOTTOM);
  }



=>  After storing images Now Retrieve:

  List itemList=new List();

  @override
  void initState() {
    fb.once().then((DataSnapshot snap){
      print(snap);
      var data=snap.value;
      print(data);
      itemList.clear();
      data.forEach((key,value) {
        itemList.add(value['link']);
      });
      setState(() {
        print("value is ");
        print(itemList.length);
      });
    });
  }

 => Now  Create First Circular listview.builder:

 Padding(
              padding: const EdgeInsets.fromLTRB(0, 5, 5, 5),
              child: Container(
                height: 60,
                width: width,
                child: LoadImages(),
              ),
            ),

double width=MediaQuery.of(context).size.width;

Widget LoadImages(){
      return Expanded(
        child: itemList.length==0?Text("Loading"):ListView.builder(
          scrollDirection: Axis.horizontal,
          itemCount:itemList.length,
          itemBuilder: (context,index){
            return Padding(
              padding: const EdgeInsets.fromLTRB(10, 0, 0, 0),
              child: Container(
                height: 60,
                width: 60,
                decoration:  BoxDecoration(
                  shape: BoxShape.circle,
                  border: Border.all(
                    color: Color(0xff9C27B0),
                  ),
                  image: DecorationImage(
                      fit: BoxFit.fill,
                      image: NetworkImage(
                        itemList[index],
                      )
                  ),
                ),
              ),
            );
          },
        ),
      );
    }

=> Now create Storyview:


itemList.length==0?Text("Loading"): Expanded(
              child: ListView(
                children: [
                  SizedBox(
                    height: 15,
                  ),
                  Container(
                      height: height-290,
                      child: StoryView(
                          controller: controller,
                          storyItems: [
                          for (var i in itemList)show1(i)
                ],
                progressPosition: ProgressPosition.bottom,
                repeat: false,
                inline: true,
              ),
            ),
            Material(
              child: InkWell(
                onTap: () {
                  Navigator.of(context).push(
                      MaterialPageRoute(builder: (context) => MoreStories()));
                },
                child: Container(
                  decoration: BoxDecoration(
                      color: Colors.black54,
                      borderRadius:
                      BorderRadius.vertical(bottom: Radius.circular(8))),
                  padding: EdgeInsets.symmetric(vertical: 8),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      Icon(
                        Icons.arrow_forward,
                        color: Colors.white,
                      ),
                      SizedBox(
                        width: 16,
                      ),
                      Text(
                        "View more stories",
                        style: TextStyle(fontSize: 16, color: Colors.white),
                      ),
                    ],
                  ),
                ),
              ),
            ),
          ],
        ),
      ),


 show1(String data){
    return StoryItem.inlineImage(
      url: data,
      controller: controller,
      caption: Text(
        "EasyCoding With AMMARA",
        style: TextStyle(
          color: Colors.white,
          backgroundColor: Colors.black54,
          fontSize: 17,
        ),
      ),
    );
  }

=> For More story Create this class:

class MoreStories extends StatefulWidget {
  @override
  _MoreStoriesState createState() => _MoreStoriesState();
}
class _MoreStoriesState extends State {
  final storyController = StoryController();

  @override
  void dispose() {
    storyController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StoryView(
        storyItems: [
          StoryItem.text(
            title: "EasyCoding With Ammara",
            backgroundColor: Colors.purple[500],

          ),
          StoryItem.text(
            title: "Amazing\n\nTap to continue.",
            backgroundColor: Colors.pink[500],
            textStyle: TextStyle(
              fontFamily: 'Dancing',
              fontSize: 40,
            ),
          ),
          StoryItem.pageImage(
            url:
            "https://image.ibb.co/cU4WGx/Omotuo-Groundnut-Soup-braperucci-com-1.jpg",
            caption: "Still sampling",
            controller: storyController,
          ),
          StoryItem.pageImage(
              url: "https://media.giphy.com/media/5GoVLqeAOo6PK/giphy.gif",
              caption: "Working with gifs",
              controller: storyController),
        ],
        progressPosition: ProgressPosition.top,
        repeat: false,
        controller: storyController,
      ),
    );
  }
}


4) Let's Code for video Class:

 floatingActionButton: FloatingActionButton(
        onPressed: (){
          uploadToStorage();
        },
        backgroundColor: Colors.transparent,
        child: Icon(
          Icons.add,
          size: 40,
          color: Colors.white,
        ),
      ),







This post first appeared on AR Programming, please read the originial post: here

Share the post

Flutter Project

×

Subscribe to Ar Programming

Get updates delivered right to your inbox!

Thank you for your subscription

×