Flutter常用第三方库

173 阅读1分钟

Flutter常用第三方库

一、模型转换 - json_serializable

  1. 导入包
dependencies:
  json_annotation: <最新版本>

dev_dependencies:
  build_runner: <最新版本>
  json_serializable: <最新版本>

2.创建模型

caijinglong.github.io/json2dart/i… json自动转换,其中part 'entity.g.dart';  entity为模型文件名称

3.生成model(命令行)

flutter packages pub run build_runner watch  持续生成

二、状态管理 - provider

1、main函数

void main() {
  runApp(
    MultiProvider(providers: [
      ChangeNotifierProvider(create: (ctx) => HomeModel()),
      ChangeNotifierProvider(create: (ctx) => HomeModel1()),
    ], child: const MyApp()),
  );
}

2、model类(继承或混入ChangeNotifier,更改后调用notifyListeners())

class HomeModel with ChangeNotifier {
  String name = "hhh";
  Int age= 18;

  String get modelname => name;

  void changeName() {
    name = "wlc";
    notifyListeners();
  }
  void changeAge(){
    age = 20;
    notifyListeners();
  }
}

3、使用(Consumer/selector/watch/read)

        body: Column(
          children: [
            Consumer<HomeModel>(builder: (_, homemodel, child) {
              return Text(homemodel.name);
            }),
            // 第一种
            Consumer<HomeModel>(builder: (_, homemodel, child) {
              return OutlinedButton(
                  onPressed: () {
                    homemodel.changeName();
                  },
                  child: Text("更改值"));
            }),
            // 第二种
            OutlinedButton(
                onPressed: () {
                  Provider.of<HomeModel>(context, listen: false).changeName();
                },
                child: Text("更改值")),
                 Selector<HomeModel, int>(
            selector: (context, homeModel) => homeModel.age,
              builder: ((context, age, child) {
                return Text("$age");
              }),
            ),
           // watch取值、read更改值
           Text(context.watch<HomeModel>().name),
           OutlinedButton(
               onPressed: () {
                 context.read<HomeModel>().changeName();
               },
               child: Text("read"))
          ], 
          
        )

三、数据存储--shared_preferences

blog.csdn.net/eastWind110…

四、屏幕适配--flutter_screenutil

pub地址:pub.flutter-io.cn/packages/fl…

五、轮播图--card_swiper

pub地址:pub.dev/packages/ca…

六、Toast--fluttertoast

pub地址: pub.dev/packages/fl…

static void showToast(String message) {
  if (message == null) { return; } 
  Fluttertoast.showToast( 
      msg: message, 
      gravity: ToastGravity.CENTER, 
      backgroundColor: const Color(...), 
  );
}
 ///取消所有
Toast static void dismissFToast() {
   FToast().removeQueuedCustomToasts(); 
}

七、网络图片加载缓存--extended_image

pub地址:pub.dev/packages/ex…