博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flutter 对provider进行简单的二次封装
阅读量:3957 次
发布时间:2019-05-24

本文共 1470 字,大约阅读时间需要 4 分钟。

前言

封装的目的,在于减少项目对第三方库的依赖,如果项目要更改第三方框架,如果项目对第三方库依赖较深,改起来就很麻烦,因此,这里我们对provider进行一次简单的二次封装。

ChangeNotifyProvider

import 'package:flutter/material.dart';import 'package:provider/provider.dart';class ProviderWidget
extends 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, )); }}

ChangeNotifier

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/

你可能感兴趣的文章
matplotlib(一)——pyplot使用简介
查看>>
JVM 内存(堆(heap)、栈(stack)和方法区(method) )
查看>>
深入理解JVM—JVM内存模型
查看>>
SSM框架简介
查看>>
数据库查询连接(JOIN)用法
查看>>
SQL数据库面试题以及答案(50例题)
查看>>
深入理解线程和线程池(图文详解)
查看>>
生产者消费者模式的实现(java实现)
查看>>
Mysql索引详解及基本用法
查看>>
@responseBody注解的使用
查看>>
Git基本使用小结
查看>>
拦截器和过滤器的区别
查看>>
MyBatis一对多,多对一和多对多联表查询
查看>>
Java的反射
查看>>
Spring事务管理
查看>>
非关系型数据库NoSQL之Redis
查看>>
Java代理的三种方式
查看>>
HTTP请求之POST与GET区别
查看>>
maven添加sqlserver的jdbc驱动包
查看>>
MyBatis实现模糊查询的三种方法
查看>>