• Stars
    star
    1,422
  • Rank 31,916 (Top 0.7 %)
  • Language
    Dart
  • License
    Apache License 2.0
  • Created about 4 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An image picker (also with video and audio) for Flutter projects based on the WeChat's UI.

Flutter WeChat Assets Picker

pub package pub package CodeFactor

Build status GitHub license GitHub stars GitHub forks

Awesome Flutter FlutterCandies

Language: English | 中文

An image picker (also with videos and audios) for Flutter projects based on the WeChat's UI. The package is using photo_manager for asset implementation, extended_image for image preview, and provider to help manage the state of the picker.

Current WeChat version that UI based on: 8.x UI designs will be updated following the WeChat update in anytime.

To take a photo or a video for assets, please check the detailed usage in the example, and head over to wechat_camera_picker. The package is a standalone extension that need to be used with combination.

See the Migration Guide to learn how to migrate between breaking changes.

Table of content

Features

  • ♻️ Fully customizable with delegates override
  • 🎏 Fully customizable theme based on ThemeData
  • 💚 Completely WeChat style (even more)
  • ⚡️ Adjustable performance with different configurations
  • 📷 Image support
    • 🔬 HEIF Image type support (1)
  • 🎥 Video support
  • 🎶 Audio support (2)
  • 1️⃣ Single picking mode
  • 💱 Internationalization (i18n) support
    • RTL language support
  • Special item builder support
  • 🗂 Custom sort path delegate support
  • 📝 Custom text delegate support
  • Custom filter options support
  • 💻 macOS support

Notes 📝

  1. HEIF (HEIC) images are support to obtain and conversion, but the display with them are based on Flutter's image decoder. See flutter/flutter#20522. Use entity.file or AssetEntityImage for them when displays.
  2. Due to limitations on iOS and macOS, audio can only be fetched within the sandbox.

Projects using this plugin 🖼️

name pub github
insta_assets_picker pub package star

Screenshots 📸

1 2 3
4 5 6
7 8 9
10 10 12

READ THIS FIRST ‼️

Be aware of below notices before you started anything:

  • Due to understanding differences and the limitation of a single document, documents will not cover all the contents. If you find nothing related to your expected features and cannot understand about concepts, run the example project and check every options first. It has covered 90% of regular requests with the package.
  • The package deeply integrates with the photo_manager plugin, make sure you understand these two concepts as much as possible:

When you have questions about related APIs and behaviors, check photo_manager's API docs for more details.

Most usages are detailed covered by the example. Please walk through the example carefully before you have any questions.

Preparing for use 🍭

Versions compatibility

3.0.0 3.3.0 3.7.0 3.10.0
8.5.0+
8.4.0+
8.0.0+
7.3.0+

If you got a resolve conflict error when running flutter pub get, please use dependency_overrides to fix it.

Flutter

Run flutter pub add wechat_assets_picker, or add wechat_assets_picker to pubspec.yaml dependencies manually.

dependencies:
  wechat_assets_picker: ^latest_version

The latest stable version is: pub package

The latest dev version is: pub package

Then import the package in your code:

import 'package:wechat_assets_picker/wechat_assets_picker.dart';

Android

When using the package, please upgrade targetSdkVersion and compileSdkVersion to 33. Otherwise, no assets can be fetched on Android 13.

Permissions

Name Required Declared Max API Level Others
READ_EXTERNAL_STORAGE YES YES 32
WRITE_EXTERNAL_STORAGE NO NO 29
ACCESS_MEDIA_LOCATION YES* NO N/A Required when reading EXIF
READ_MEDIA_IMAGES YES* YES N/A Required when reading images
READ_MEDIA_VIDEO YES* YES N/A Required when reading videos
READ_MEDIA_AUDIO YES* YES N/A Required when reading audios

If you're targeting Android SDK 33+, and you don't need to load photos, videos or audios, consider declare only relevant permission in your apps, more specifically:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.your.app">
    <!--Requesting access to images and videos.-->
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
    <!--When your app has no need to access audio, remove it or comment it out.-->
    <!--<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />-->
</manifest>

iOS

  1. Platform version has to be at least 11.0. Modify ios/Podfile and update accordingly.
    platform :ios, '11.0'
    
  2. Add the following content to Info.plist.
<key>NSAppTransportSecurity</key>
<dict>
	<key>NSAllowsArbitraryLoads</key>
	<true/>
</dict>
<key>NSPhotoLibraryUsageDescription</key>
<string>Replace with your permission description.</string>

macOS

  1. Platform version has to be at least 10.15. Modify macos/Podfile and update accordingly.
    platform :osx, '10.15'
  2. Set the minimum deployment target of the macOS to 10.15. Use XCode to open macos/Runner.xcworkspace .
  3. Follow the iOS instructions and modify Info.plist accordingly.

Usage 📖

Localizations

When you're picking assets, the package will obtain the Locale? from your BuildContext, and return the corresponding text delegate of the current language. Make sure you have a valid Locale in your widget tree that can be accessed from the BuildContext. Otherwise, the default Chinese delegate will be used.

Embedded text delegates languages are:

  • 简体中文 (default)
  • English
  • העברית
  • Deutsche
  • Локализация
  • 日本語
  • مة العربية
  • Délégué
  • Tiếng Việt

If you want to use a custom/fixed text delegate, pass it through the AssetPickerConfig.textDelegate.

Simple usage

final List<AssetEntity>? result = await AssetPicker.pickAssets(context);

Use AssetPickerConfig for more picking behaviors.

final List<AssetEntity>? result = await AssetPicker.pickAssets(
  context,
  pickerConfig: const AssetPickerConfig(),
);

Fields in AssetPickerConfig:

Name Type Description Default
selectedAssets List<AssetEntity>? Selected assets. Prevent duplicate selection. null
maxAssets int Maximum asset that the picker can pick. 9
pageSize int? Number of assets per page. Must be a multiple of gridCount. 80
gridThumbnailSize ThumbnailSize Thumbnail size for the grid's item. ThumbnailSize.square(200)
pathThumbnailSize ThumbnailSize Thumbnail size for the path selector. ThumbnailSize.square(80)
previewThumbnailSize ThumbnailSize? Preview thumbnail size in the viewer. null
requestType RequestType Request type for picker. RequestType.common
specialPickerType SpecialPickerType? Provides the option to integrate a custom picker type. null
keepScrollOffset bool Whether the picker should save the scroll offset between pushes and pops. null
sortPathDelegate SortPathDelegate<AssetPathEntity>? Path entities sort delegate for the picker, sort paths as you want. CommonSortPathDelegate
sortPathsByModifiedDate bool Whether to allow sort delegates to sort paths with FilterOptionGroup.containsPathModified. false
filterOptions PMFilter? Allow users to customize assets filter options. null
gridCount int Grid count in picker. 4
themeColor Color? Main theme color for the picker. Color(0xff00bc56)
pickerTheme ThemeData? Theme data provider for the picker and the viewer. null
textDelegate AssetPickerTextDelegate? Text delegate for the picker, for customize the texts. AssetPickerTextDelegate()
specialItemPosition SpecialItemPosition Allow users set a special item in the picker with several positions. SpecialItemPosition.none
specialItemBuilder SpecialItemBuilder? The widget builder for the special item. null
loadingIndicatorBuilder IndicatorBuilder? Indicates the loading status for the builder. null
selectPredicate AssetSelectPredicate Predicate whether an asset can be selected or unselected. null
shouldRevertGrid bool? Whether the assets grid should revert. null
limitedPermissionOverlayPredicate LimitedPermissionOverlayPredicate? Predicate whether the limited permission overlay should be displayed. null
pathNameBuilder PathNameBuilder<AssetPathEntity>? Build customized path (album) name with the given path entity. null
  • When maxAssets equals to 1 (a.k.a. single picking mode), use SpecialPickerType.noPreview will immediately select asset clicked (pressed) by the user and popped.
  • When requestType equals to RequestType.video, the picker will obtain Live Photos on iOS by default. You can disable it by setting FilterOptionGroup.containsLivePhotos to false.
  • limitedPermissionOverlayPredicate lives without persistence, if you want to ignore the limited preview after restart, you'll need to integrate with your own saving methods.

Detailed usage

We've put multiple common usage with the packages in the example. You can both found List<PickMethod> pickMethods in here and here, which provide methods in multiple picking and single picking mode. Assets will be stored temporary and displayed at the below of the page.

Display selected assets

The AssetEntityImage and AssetEntityImageProvider can display the thumb image of images & videos, and the original data of image. Use it like a common Image and ImageProvider.

AssetEntityImage(asset, isOriginal: false);

Or:

Image(image: AssetEntityImageProvider(asset, isOriginal: false));

Register assets change observe callback

// Register callback.
AssetPicker.registerObserve();

// Unregister callback.
AssetPicker.unregisterObserve();

Upload an AssetEntity with a form data

There are multiple ways to upload an AssetEntity with I/O related methods. Be aware, I/O related methods will consume performance (typically time and memory), they should not be called frequently.

With http

http package: https://pub.dev/packages/http

The http package uses MultipartFile to handle files in requests.

Pseudo code:

import 'package:http/http.dart' as http;

Future<void> upload() async {
  final entity = await obtainYourEntity();
  final uri = Uri.https('example.com', 'create');
  final request = http.MultipartRequest('POST', uri)
    ..fields['test_field'] = 'test_value'
    ..files.add(await multipartFileFromAssetEntity(entity));
  final response = await request.send();
  if (response.statusCode == 200) {
    print('Uploaded!');
  }
}

Future<http.MultipartFile> multipartFileFromAssetEntity(AssetEntity entity) async {
  http.MultipartFile mf;
  // Using the file path.
  final file = await entity.file;
  if (file == null) {
    throw StateError('Unable to obtain file of the entity ${entity.id}.');
  }
  mf = await http.MultipartFile.fromPath('test_file', file.path);
  // Using the bytes.
  final bytes = await entity.originBytes;
  if (bytes == null) {
    throw StateError('Unable to obtain bytes of the entity ${entity.id}.');
  }
  mf = http.MultipartFile.fromBytes('test_file', bytes);
  return mf;
}
With dio

dio package: https://pub.dev/packages/dio

The dio package also uses MultipartFile to handle files in requests.

Pseudo code:

import 'package:dio/dio.dart' as dio;

Future<void> upload() async {
  final entity = await obtainYourEntity();
  final uri = Uri.https('example.com', 'create');
  final response = dio.Dio().requestUri(
    uri,
    data: dio.FormData.fromMap({
      'test_field': 'test_value',
      'test_file': await multipartFileFromAssetEntity(entity),
    }),
  );
  print('Uploaded!');
}

Future<dio.MultipartFile> multipartFileFromAssetEntity(AssetEntity entity) async {
  dio.MultipartFile mf;
  // Using the file path.
  final file = await entity.file;
  if (file == null) {
    throw StateError('Unable to obtain file of the entity ${entity.id}.');
  }
  mf = await dio.MultipartFile.fromFile(file.path);
  // Using the bytes.
  final bytes = await entity.originBytes;
  if (bytes == null) {
    throw StateError('Unable to obtain bytes of the entity ${entity.id}.');
  }
  mf = dio.MultipartFile.fromBytes(bytes);
  return mf;
}

Custom pickers

AssetPickerBuilderDelegate, AssetPickerViewerBuilderDelegate, AssetPickerProvider and AssetPickerViewerProvider are all exposed and overridable. You can extend them and use your own type with generic type <A: Asset, P: Path>, then implement abstract methods.

We've defined a picker that integrates with Directory and File (completely out of the photo_manager scope), and a picker with multiple tabs switching in the "Custom" page. You can submit PRs to create your own implementation if you found your implementation might be useful for others. See Contribute custom implementations for more details.

Frequently asked question

Execution failed for task ':photo_manager:compileDebugKotlin'

See photo_manager#561 for more details.

Create AssetEntity from File or Uint8List (rawData)

In order to combine this package with camera shooting or something related, there's a solution about how to create an AssetEntity with File or Uint8List object.

final File file = your_file; // Your `File` object
final String path = file.path;
final AssetEntity fileEntity = await PhotoManager.editor.saveImageWithPath(
  path,
  title: basename(path),
); // Saved in the device then create an AssetEntity

final Uint8List data = your_data; // Your `Uint8List` object
final AssetEntity imageEntity = await PhotoManager.editor.saveImage(
  file.path,
  title: 'title_with_extension.jpg',
); // Saved in the device then create an AssetEntity

Notice: If you don't want to keep the file in your device, use File for operations as much as possible. Deleting an AssetEntity might cause system popups show:

final List<String> result = await PhotoManager.editor.deleteWithIds(
  <String>[entity.id],
);

See photo_manager#from-raw-data and photo_manager#delete-entities for more details.

Glide warning 'Failed to find GeneratedAppGlideModule'

W/Glide   (21133): Failed to find GeneratedAppGlideModule. 
                   You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler
                   in you application ana a @GlideModule annotated AppGlideModule implementation
                   or LibraryGlideModules will be silently ignored.

Glide needs annotation to keep singleton, prevent conflict between instances and versions, so while the photo manager uses Glide to implement image features, the project which import this should define its own AppGlideModule. See Glide Generated API docs for implementation.

Contributors

Many thanks to these wonderful people (emoji key):

Alex Li
Alex Li

💻 🎨 📖 💡 🤔 🚧 💬 👀
Caijinglong
Caijinglong

💡 🤔
Marcel Schneider
Marcel Schneider

🐛 💻 🤔
ganlanshu0211
ganlanshu0211

🐛 🤔
JasonHezz
JasonHezz

🐛 💻
Yaniv Shaked
Yaniv Shaked

🌍 💻 🐛 🚧
avi-yadav
avi-yadav

💻
Letalus
Letalus

🐛 🌍
greymag
greymag

🌍
Nickolay Savchenko
Nickolay Savchenko

🎨
Kosuke Saigusa
Kosuke Saigusa

🌍
三闻书店
三闻书店

📖
DidiosFaust
DidiosFaust

🌍
xiejie
xiejie

🐛
Ahmed Masoud
Ahmed Masoud

🌍
luomo-pro
luomo-pro

️️️️♿️ 🐛
paigupai
paigupai

🌍
Muhammad Taqi Abdul Aziz
Muhammad Taqi Abdul Aziz

📖
何锦余
何锦余

🐛
Leon Dudlik
Leon Dudlik

🐛
Maël
Maël

💻
dddrop
dddrop

💻
Nguyen Phuc Loi
Nguyen Phuc Loi

🌍

This project follows the all-contributors specification. Contributions of any kind welcomed!!

Credits

Every aspect of IntelliJ IDEA has been designed to maximize developer productivity. Together, intelligent coding assistance and ergonomic design make development not only productive but also enjoyable.

Thanks to JetBrains for allocating free open-source licenses for IDEs such as IntelliJ IDEA.

More Repositories

1

wechat_flutter

wechat_flutter is Flutter version WeChat, an excellent Flutter instant messaging IM open source library!
Dart
2,453
star
2

extended_image

A powerful official extension library of image, which support placeholder(loading)/ failed state, cache network, zoom pan image, photo view, slide out page, editor(crop,rotate,flip), paint custom etc.
Dart
1,850
star
3

NeteaseCloudMusic

Flutter - NeteaseCloudMusic Flutter 版本的网易云音乐
Dart
1,754
star
4

flutter_smart_dialog

An elegant Flutter Dialog solution | 一种更优雅的 Flutter Dialog 解决方案
Dart
1,005
star
5

flutter_candies

custom flutter candies(widgets) for you to build flutter app easily, enjoy it
Dart
795
star
6

flutter_photo_manager

A Flutter plugin that provides images, videos, and audio abstraction management APIs without interface integration, available on Android, iOS, macOS and OpenHarmony..
Dart
634
star
7

extended_text

A powerful extended official text for Flutter, which supports Speical Text(Image,@somebody), Custom Background, Custom overFlow, Text Selection.
Dart
622
star
8

flutter_image_compress

flutter image compress
Dart
602
star
9

extended_nested_scroll_view

extended nested scroll view to fix following issues. 1.pinned sliver header issue 2.inner scrollables in tabview sync issue 3.pull to refresh is not work. 4.do without ScrollController in NestedScrollView's body
Dart
576
star
10

FlutterJsonBeanFactory

What I do is generate dart beans based on json, as well as generics parameters and json build instances
Kotlin
560
star
11

extended_text_field

extended official text field to quickly build special text like inline image, @somebody, custom background etc.
Dart
532
star
12

flutter_custom_calendar

Flutter的一个日历控件
Dart
497
star
13

like_button

Like Button is a flutter library that allows you to create a button with animation effects similar to Twitter's heart when you like something and animation effects to increase like count.
Dart
436
star
14

flutter_image_editor

Flutter plugin, support android/ios.Support crop, flip, rotate, color martix, mix image, add text. merge multi images.
Dart
391
star
15

JsonToDart

The tool to convert json to dart code, support Windows,Mac,Web.
Dart
353
star
16

flutter_scrollview_observer

A widget for observing data related to the child widgets being displayed in a ScrollView. Maintainer: @LinXunFeng
Dart
349
star
17

waterfall_flow

A Flutter grid view which supports waterfall flow layout.
Dart
345
star
18

flutter_wechat_camera_picker

A camera picker (take photos and videos) for Flutter projects based on WeChat's UI. It's a standalone module of wechat_assets_picker yet it can be run separately.
Dart
335
star
19

loading_more_list

A loading more list which supports ListView,GridView,WaterfallFlow and Slivers.
Dart
331
star
20

ncov_2019

An online query App for COVID-19 statistics developed by Flutter was used.
Dart
256
star
21

extended_tabs

A powerful official extension library of Tab/TabBar/TabView, which support to scroll ancestor or child Tabs when current is overscroll, and set scroll direction and cache extent.
Dart
254
star
22

flutter-interactive-chart

A candlestick chart that supports pinch-to-zoom and panning.
Dart
191
star
23

pull_to_refresh_notification

Flutter plugin for building pull to refresh effects with PullToRefreshNotification and PullToRefreshContainer quickly.
Dart
183
star
24

flutter_interactional_widget

Dart
165
star
25

extended_sliver

A powerful extension library of Sliver, which include SliverToNestedScrollBoxAdapter, SliverPinnedPersistentHeader, SliverPinnedToBoxAdapter and ExtendedSliverAppbar.
Dart
157
star
26

extended_image_library

package library for extended_image, extended_text and extended_text_field,provide common base class.
Dart
146
star
27

flutter_drawing_board

A new Flutter package of drawing board
Dart
137
star
28

ff_annotation_route

Provide route generator to create route map quickly by annotations.
Dart
118
star
29

flutter_filereader

Flutter实现的本地文件(pdf word excel 等)查看插件,非在线预览
Dart
109
star
30

flutter_tilt

👀 Easily apply tilt parallax hover effects for Flutter, which supports tilt, light, shadow effects, and gyroscope sensors | 为 Flutter 轻松创建倾斜视差悬停效果,支持倾斜、光照、阴影效果和陀螺仪传感器
Dart
105
star
31

nav_router

flutter The lightest, easiest and most convenient route management!
Dart
103
star
32

w_popup_menu

w_popup_menu # A pop-up menu that mimics the iOS WeChat page
Dart
90
star
33

left-scroll-actions

Flutter的左滑删除组件
Dart
82
star
34

flutter_asset_generator

Generate an R file for mapping all assets. Supports preview of image.
Dart
79
star
35

extended_text_library

extended_text_library for extended_text and extended_text_field
Dart
74
star
36

flutter_hsvcolor_picker

An HSV color picker designed for your Flutter app. Pickers: RGB, HSV, Color Wheel, Palette Hue, Palette Saturation, Palette Value, Swatches.
Dart
65
star
37

stack_board

层叠控件摆放
Dart
60
star
38

no-free-usage-action

A NO-FREE-USAGE action for github. (Only worked with github action.)
Dart
60
star
39

flex_grid

The FlexGrid control provides a powerful and quickly way to display data in a tabular format. It is including that frozened column/row,loading more, high performance and better experience in TabBarView/PageView.
Dart
57
star
40

extended_list

extended list(ListView/GridView) support track collect garbage of children/viewport indexes, build lastChild as special child in the case that it is loadmore/no more item and enable to layout close to trailing.
Dart
50
star
41

flutter_juejin

https://juejin.cn in Flutter
Dart
48
star
42

gitcandies

A GitHub Flutter application.
Dart
47
star
43

fconsole

一个用于调试的面板
Dart
44
star
44

ripple_backdrop_animate_route

A ripple animation with backdrop of route.
Dart
44
star
45

flutter_ali_auth

Flutter Ali Auth Plugin 阿里云一键登录Flutter插件
Java
42
star
46

flutter_apodidae

🔥🔥 收录 Flutter 优化合集,apodidae (雨燕)是飞翔速度最快的鸟类,与 flutter (颤动)不谋而合。
40
star
47

flutter_bdface_collect

a baidu face offline collect plugin. Only Android and IOS platforms are supported. 百度人脸离线采集插件,只支持安卓和iOS。
Objective-C
35
star
48

flutter_record_mp3

flutter record mp3 using the native api
Dart
34
star
49

assets_generator

The flutter tool to generate assets‘s configs(yaml) and consts automatically for single project and multiple modules.
Dart
34
star
50

flutter_draggable_container

A Draggable Widget Container
Dart
27
star
51

flutter_qweather

和风天气 Flutter 插件
Dart
26
star
52

baidupan

Baidu net disk api for dart, 百度网盘的 dart 库
Dart
26
star
53

flutter_switch_clipper

A Flutter package that two widgets switch with clipper.
Dart
24
star
54

http_client_helper

A Flutter plugin for http request with cancel and retry fuctions.
Dart
24
star
55

dash_painter

a package for flutter canvas paint dash line path easily.
Dart
23
star
56

flutter_slider_view

A slider view widget that supports custom type models and various configs.
Dart
21
star
57

flutter_live_activities

Flutter Live Activities Plugin
Dart
21
star
58

extra_hittest_area

Manually add the extra hitTest area of a widget without changing its size or layout.
Dart
17
star
59

ios_willpop_transition_theme

A Flutter package to solve the conflict between ios sliding back and Willpop
Dart
17
star
60

flutter_learning_tests

学习 Flutter 路上的点滴及小测~
Dart
16
star
61

flutter_mlkit_scan_plugin

Kotlin
15
star
62

should_rebuild

Dart
14
star
63

saver_gallery

Kotlin
12
star
64

candies_analyzer_plugin

The plugin to help create custom analyzer plugin quickly and provide some useful lints and get suggestion and auto import for extension member.
Dart
12
star
65

flutter_candies_gallery

flutter_candies
Dart
11
star
66

scan_barcode

Barcode/QRCode scan, base of google mikit.
Dart
11
star
67

CandiesBot

Java
11
star
68

packages

Custom Flutter Candies (packages) for you to easily build your Flutter app. Enjoy it!
11
star
69

flutter_float_window

flutter_float_window是一个悬浮窗插件,具备悬浮窗权限申请等功能
Java
11
star
70

extended_list_library

package library for extended_list and waterfall_flow, it provides core classes.
Dart
10
star
71

photo_widget

Base on photo_manager, wraps up some UI components to quickly display the photo_manager as a usable widget, inserting it wherever you need it.
Dart
10
star
72

flutter_app_build_tool

A CLI tool that helps to build Flutter apps.
Dart
9
star
73

douget

Dart
9
star
74

flutter_custom_inspector

A customizable inspector that can called directly through Flutter apps.
Dart
8
star
75

adaptation

Screen for adaptation.
C++
8
star
76

ff_native_screenshot

A Flutter plugin to take or listen screenshot(support Platform Views) for Android and iOS with native code.
Java
8
star
77

coordtransform

A coord transform tool. 提供百度坐标系(BD-09)、火星坐标系(国测局坐标系、GCJ02)、WGS84坐标系的相互转换。
Dart
8
star
78

properties

Load properties format in dart or flutter
Dart
7
star
79

w_reorder_list

Dart
7
star
80

JsonToDartWeb

JsonToDart Web 带字体文件
7
star
81

flutter_candies_demo_library

package library for demo of flutter candies, it provides core classes.
Dart
7
star
82

JsonToDartFlutterWeb

6
star
83

sync_scroll_library

The library for extended_tabs and flex_grid
Dart
5
star
84

env2dart

A simple way to generate `dart` code from a `.env` file.
Dart
5
star
85

loading_more_list_library

dart package library for LoadingMoreList, it provides core classes.
Dart
5
star
86

flutter_challenges

Just do the first one, don't do second who.
Dart
4
star
87

dext

Some extension for dart
Dart
4
star
88

flutter_candies_package_tools

tool to create package and demo
Dart
4
star
89

flutter_clean

help clean all of Flutter and Dart projects
Dart
3
star
90

simple_provider

flutter simple provider
Dart
3
star
91

ff_annotation_route_library

The library for ff_annotation_route
Dart
3
star
92

upgrade_tool

Resolve warnings caused by xxxbinding. Instance in Flutter 3.0
Dart
2
star
93

note_edit

A library of flutter note editor plugins.
Dart
2
star
94

blue_flutter

blue_flutter是flutter的蓝牙通讯插件
Java
2
star
95

ff_annotation_route_core

The core library for ff_annotation_route
Dart
2
star
96

dart_wake_on_lan

A CLI application to send Wake-On-Lan packets.
Dart
2
star
97

maven

Organizational maven deploy;组织的maven仓库;
1
star
98

.github-workflow

Run some workflows for the organization.
Python
1
star
99

flutter_photo_manager_plugins

Extra plugins for the photo_manager plugin.
C++
1
star
100

flutter_bindings_compatible

Provides compatible bindings instance across different Flutter version.
C++
1
star