本文共 1470 字,大约阅读时间需要 4 分钟。
封装的目的,在于减少项目对第三方库的依赖,如果项目要更改第三方框架,如果项目对第三方库依赖较深,改起来就很麻烦,因此,这里我们对provider进行一次简单的二次封装。
import 'package:flutter/material.dart';import 'package:provider/provider.dart';class ProviderWidgetextends StatefulWidget { T viewmodel; Widget child; Function(BuildContext, T, Widget) builder; Function(T model) load; ProviderWidget( {@required this.viewmodel, this.child, @required this.builder, this.load, Key key}) : super(key: key); @override _ProviderWidgetState createState() => _ProviderWidgetState ();}class _ProviderWidgetState extends State > { @override void initState() { super.initState(); // 控件初始化 if (widget.load != null) { widget.load(widget.viewmodel); } } @override Widget build(BuildContext context) { return ChangeNotifierProvider( create: (context) => widget.viewmodel, child: Consumer ( builder: (context, value, child) => widget.builder(context, value, child), child: widget.child, )); }}
import 'package:flutter/material.dart';class BaseViewModel extends ChangeNotifier { void notify() { notifyListeners(); }}
首先建立一个BaseViewModel类
import 'package:providerStudy/viewmodel/base/BaseViewModel.dart';class HomePageViewModel extends BaseViewModel { String text = "初始"; void touch() { this.text = "被点击"; print(this.text); notify(); }}
然后再页面中进行使用
转载地址:http://ndtzi.baihongyu.com/