Skip to content

第三方库组件

常用的库

Flutter 中,常用的第三方组件。

功能
dio网络框架
shared_preferences本地数据缓存
fluttertoasttoast
flutter_reduxredux
device_info设备信息
connectivity网络链接
flutter_markdownmarkdown 解析
json_annotationjson 模板
json_serializablejson 模板
url_launcher启动外部浏览器
iconfont字库图标
share系统分享
flutter_spinkit加载框样式
get_version版本信息
flutter_webview_plugin全屏的 webview
sqflite数据库
flutter_statusbar状态栏
flutter_svgsvg
photo_view图片预览
flutter_slidable侧滑
flutter_cache_manager缓存管理
path_provider本地路径
permission_handler权限
scope_model状态管理和共享
lottiesvg 动画
flare路径动画

dio

dio 是一个强大的 Dart Http 请求库,支持 Restful API、FormData、拦截器、请求取消、Cookie 管 理、文件上传/下载、超时、自定义适配器等。

详情:https://pub.dev/packages/dio

使用

dart
import 'package:dio/dio.dart';
/// More examples see
/// https://github.com/flutterchina/dio/tree/master/example
main() async {
  var dio = Dio();
  Response response = await dio.get('https://google.com');
  print(response.data);
}

flutter_swiper

flutter_swiper 是 Flutter 中最好的轮播组件。它可以实现多种轮播效果。同时适配 Android 和 iOS。

使用

dart
final List<String> imgs = [
  'images/1.jpg',
  'images/2.jpg',
  'images/3.jpg',
];

Container(
  height: 200,
  child: Swiper(
    itemBuilder: (BuildContext context, int index) {
      return Image.asset(
        imgs[index],
        fit: BoxFit.cover,
    	);
  	},
    itemCount: imgs.length,
    pagination: SwiperPagination(), // 如果不填则不显示指示点
    control: SwiperControl(), // 如果不填则不显示左右按钮
  ),
)

常用属性

参数默认值描述
scrollDirectionAxis.horizontal滚动方向,设置为Axis.vertical如果需要垂直滚动
looptrue无限轮播模式开关
index0初始的时候下标位置
autoplayfalse自动播放开关
onIndexChangedvoid onIndexChanged(int index)下标改变的时候调用
onTapvoid onTap(int index)当用户点击某个轮播的时候调用
duration300.0动画时间,单位是毫秒
paginationnull设置 SwiperPagination() 展示默认分页指示器
controlnull设置 SwiperControl() 展示默认分页按钮

分页指示器

分页指示器继承自 SwiperPlugin, SwiperPlugin 为 Swiper 提供额外的界面。设置为 SwiperPagination() 展示默认分页.

参数默认值描述
alignmentAlignment.bottomCenter如果要将分页指示器放到其他位置,那么可以修改这个参数
marginconst EdgeInsets.all(10.0)分页指示器与容器边框的距离
builderSwiperPagination.dots目前已经定义了两个默认的分页指示器样式: SwiperPagination.dots 、SwiperPagination.fraction ,都可以做进一步的自定义.

控制按钮

控制按钮组件也是继承自 SwiperPlugin ,设置 new SwiperControl() 展示默认控制按钮.

参数默认值描述
iconPreviousIcons.arrow_back_ios上一页的IconData
iconNextIcons.arrow_forward_ios下一页的IconData
colorTheme.of(context).primaryColor控制按钮颜色
size30.0控制按钮的大小
paddingconst EdgeInsets.all(5.0)控制按钮与容器的距离

控制器(SwiperController)

SwiperController 用于控制 Swiper 的 index 属性, 停止和开始自动播放. 通过 SwiperController() 创建一个SwiperController实例,并保存,以便将来能使用。

方法描述
void move(int index, {bool animation: true})移动到指定下标,设置是否播放动画
void next({bool animation: true})下一页
void previous({bool animation: true})上一页
void startAutoplay()开始自动播放
void stopAutoplay()停止自动播放

自动播放

参数默认值描述
autoplayDely3000自动播放延迟毫秒数.
autoplayDisableOnInteractiontrue当用户拖拽的时候,是否停止自动播放.

shared_preferences

SharedPreferences轻量级存储类,以键值对的形式保存设置,属性和数据。在Flutter平台我们使用 shared_preferences库来同时支持Android 和iOS。

详情:https://pub.dev/packages/shared_preferences

使用

  • 增 setString(key, value)
  • 删 remove(key) clear()
  • 改 更改就是重新设置数据。 setString(key, value)
  • 查 getString(key)
dart
class SharedPreferencesDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      width: double.infinity,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          ElevatedButton(
            onPressed: _incrementCounter, 
            child: Text('递增')
          ),
          ElevatedButton(
            onPressed: _decrementCounter, 
            child: Text('递减')
          ),
          ElevatedButton(
            onPressed: _removeCounter, 
            child: Text('删除')
          ),
          ElevatedButton(
            onPressed: _addMyContent, 
            child: Text('设置字符串')
          ),
          ElevatedButton(
            onPressed: _getMyContent, 
            child: Text('获取字符串')
          ),
          ElevatedButton(
            onPressed: _clearContent, 
            child: Text('清空')
          ),
        ],
      )
    );
  }

  _incrementCounter() async {
    // 获取保存实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    int counter = (prefs.getInt('counter') ?? 0) + 1;
    print('Pressed $counter times.');
    await prefs.setInt('counter', counter);
  }

  _decrementCounter() async {
    // 获取保存实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    int counter = prefs.getInt('counter') ?? 0;
    if (counter > 0) {
      counter--;
    }
    print('Pressed $counter times.');
    await prefs.setInt('counter', counter);
  }

  _removeCounter() async {
    // 获取保存实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.remove('counter');
    int counter = (prefs.getInt('counter') ?? 0) + 1;
    print('Pressed $counter times.');
  }

  _addMyContent() async {
    // 获取保存实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setString('hi', 'Hello World');
    String content = prefs.getString('hi') ?? "";
    print('设置字符串的内容是 $content');
  }

  _getMyContent() async {
    // 获取保存实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String content = prefs.getString('hi') ?? "";
    print('获取字符串的内容是 $content');
  }

  _clearContent() async {
    // 获取保存实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.clear();
  }
}

Released under the MIT License.