A new Flutter package. It is build for fetching media thumbnail associate to url. On adding urls it creates thumbnail wigdet.
Youtube Link:- https://www.youtube.com/watch?v=1MAuErvBtKA
| Initial Screen | Add Thumbnail dialog | Image thumbnail |
|---|---|---|
| MediaListView widget | MediaListView with multiple children | Error on invaild link |
|---|---|---|
await Thumbnail.addLink( context: context, /// callback that return thumbnail information in `MediaInfo` object onLinkAdded: (mediaInfo) { print("Thumbnail title:- ${mediaInfo.title}"); print("Thumbnail url:- ${mediaInfo.thumbnailUrl}"); }, );- Invoke method
Thumbnail.addLink()to display add link dialog. - Add valid link in text field.
- Click
Nextbutton. - On
Nextbutton clicked it it fetch meta accoicated with link. - If fetched data contain valid image url it will shows image thumbnail.
- Else it will show some error text.
Savebutton will visible only if thumbnail image is fetched.- On
Savebutton clicked it returnMediaInfoobject that contains thumbnail information like title, imageUrl etc. - On
Cancelbutton clicked it will close dialog and return nothing.
List<MediaInfo> mediaList = []; List<String> urlList = ["https://www.youtube.com/watch?v=uv54ec8Pg1k"]; MediaListView( titleTextStyle: TextStyle(color:Colors.white), titleTextBackGroundColor: Colors.grey, overlayChild:Icon(Icons.save), urls: urlList, mediaList: mediaList, onPressed: (url) { print(url); }, );- To show thumbnails list pass valid media url list.
- If this is set to null thumbnail list will create from media list
- If mediaList and urls both have values then thumbnail list will create using both list.
dependencies: add_thumbnail: ^0.0.1 import 'package:add_thumbnail/add_thumbnail.dart'; List<MediaInfo> mediaList = [];List<String> urlList = ["https://www.youtube.com/watch?v=uv54ec8Pg1k"]; void openAddLinkDialog() async { // Open thumbnail dialog to add link await Thumbnail.addLink( context: context, /// callback that return thumbnail information in `MediaInfo` object onLinkAdded: (mediaInfo) { if (mediaInfo != null && mediaInfo.thumbnailUrl.isNotEmpty) { setState(() { mediaList.add(mediaInfo); }); } }, ); }Widget getMediaList() { return MediaListView( onPressed: (url) { print(url); }, urls: urlList, mediaList: mediaList, ); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Color(0xFFEEEEEE), appBar: AppBar( title: Text(widget.title), ), body:(mediaList == null || mediaList.isEmpty) && (urlList == null || urlList.isEmpty) ? Center( child: Text( "Press add button to add thumbnail.", style: TextStyle(color: Colors.black54, fontSize: 16), ), ) : getMediaList(), floatingActionButton: FloatingActionButton( onPressed: openAddLinkDialog, tooltip: 'Add link', child: Icon(Icons.add), ), ); }I welcome and encourage all pull requests. It usually will take me within 24-48 hours to respond to any issue or request.
Sonu Sharma (Twitter) (Youtube) (Insta)
If you found this project helpful or you learned something from the source code and want to thank me, consider buying me a cup of ☕
