Short Info: Stories like in Instagram, each story can include multiple images and videos. Package supports video, titles, preliminary caching.
flutter_instagram_stories
A Flutter plugin for displaying stories just like Whatsapp & Instagram. Built-in groups (multiple stories with one icon), cache, video, gifs.
Plugin can be used in any app for displaying news, educational content and etc. Look the sample app here.
Note: This plugin is under active development, and there are some known bugs and a lot of features to implement. Please, add issues or feature requests here: issue
The project was initially copied from https://github.com/blackmann/story_view – great thanks for this nice package. In case you more flexible functionality you can check the original project.
Important notes:
- For now plugin works with Firebase only.
- This is first beta version, please add all issues and feature requests here: issue
Features
- Only one line of code to implement this plugin to app.
- Display images, gifs, videos.
- Adjustable titles on icons.
- Preliminary caching after app started.
- Multilanguage support.
- Callback when user closed stories – helps to implement subscriptions after first launch and etc.
Installing
Look how install here https://pub.dev/packages/flutter_instagram_stories#-installing-tab-
Now in your Dart code, you can use:
import 'package:flutter_instagram_stories/flutter_instagram_stories.dart';
iOS
For playing video plugin uses official video_player https://pub.dev/packages/video_player
From documentation:
- Warning: The video_player plugin doesn’t work on iOS simulators. You must test videos on real iOS devices.
- For iOS, add the following to the Info.plist file found at /ios/Runner/Info.plist.NSAppTransportSecurity NSAllowsArbitraryLoads
Usage
You can find complete working example here https://github.com/awaik/flutter_instagram_stories/tree/master/example
Dart code
Connect to collection where you keep stories
static String collectionDbName = 'instagram_stories_db'; CollectionReference dbInstance = Firestore.instance.collection(collectionDbName);
And add stories full functionality to your app.
FlutterInstagramStories( collectionDbName: collectionDbName, showTitleOnIcon: true, backFromStories: () { _backFromStoriesAlert(); }, iconTextStyle: TextStyle( fontSize: 14.0, color: Colors.white, ), iconImageBorderRadius: BorderRadius.circular(15.0), iconBoxDecoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(15.0)), color: Color(0xFFffffff), boxShadow: [ BoxShadow( color: Color(0xff333333), blurRadius: 10.0, offset: Offset( 0.0, 4.0, ), ), ], ), iconWidth: 150.0, iconHeight: 150.0, textInIconPadding: EdgeInsets.only(left: 8.0, right: 8.0, bottom: 12.0), //how long story lasts in seconds imageStoryDuration: 7, progressPosition: ProgressPosition.top, repeat: true, inline: false, languageCode: 'en', closeButtonIcon: Icon( Icons.close, color: Colors.blueGrey, size: 28.0, ), closeButtonBackgroundColor: Color(0x00ffffff), ),
Firestore database
Plugin works with Firestore database and package https://pub.dev/packages/cloud_firestore already included into plugin.
You can use example with sample database in example folder or create your own database.
Steps to create:
- Add Firebase to your app
- Android https://firebase.google.com/docs/flutter/setup?platform=android
- iOS https://firebase.google.com/docs/flutter/setup?platform=ios
- Create Firestore database
- Create collection with any name. After you will use this name in dart code only once.
- Create documents inside collection with exact structure, like on image below
DateTime date;
List file
// for example
// [{String filetype, String url}
// {String filetype, String url}
// ...]
String previewImage;
Map previewTitle
// for example
// {"en": someText, "anyLangCode": someText}
That’s it! Now your app has instagram stories with caching and other powerful features.
Use cases in the real apps
App for Android and iOS – https://lifext.app/
Download Flutter Instagram Stories Plugin on GitHub
https://github.com/awaik/flutter_instagram_stories
Provides the list of the opensource Flutter apps collection with GitHub repository.