Flutter常用第三方库
一、模型转换 - json_serializable
- 导入包
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
四、屏幕适配--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…