当前位置: 首页 > news >正文

怎样在领英上做公司网站做家政服务网站

怎样在领英上做公司网站,做家政服务网站,精品网站开发,凡科建站网下面是一个完整的例子,演示如何在 Riverpod 中: 在一个组件(WidgetA)中更新状态。在另一个组件(WidgetB)中获取更新后的状态。 我们将使用 riverpod flutter_riverpod,并基于最新的 Riverpod…

下面是一个完整的例子,演示如何在 Riverpod 中:

  1. 在一个组件(WidgetA)中更新状态
  2. 在另一个组件(WidgetB)中获取更新后的状态

我们将使用 riverpod + flutter_riverpod,并基于最新的 Riverpod 2.0 语法(推荐使用代码生成 @riverpod)。


1. 定义 Provider

首先,创建一个状态管理 Provider(使用 @riverpod 代码生成)。

counter_provider.dart
import 'package:riverpod_annotation/riverpod_annotation.dart';part 'counter_provider.g.dart';// 定义一个 Counter 状态管理类

class Counter extends _$Counter {// 初始状态int build() => 0;// 更新状态的方法void increment() => state++;
}

运行代码生成:

dart run build_runner watch

这会生成 counter_provider.g.dart,包含一个全局可用的 counterProvider


2. 在 WidgetA 中更新状态

创建一个按钮组件,点击时调用 increment() 更新状态。

widget_a.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'counter_provider.dart';class WidgetA extends ConsumerWidget {const WidgetA({super.key});Widget build(BuildContext context, WidgetRef ref) {return ElevatedButton(onPressed: () {// 通过 ref 读取 Counter 并调用方法更新状态ref.read(counterProvider.notifier).increment();},child: const Text('Increment Counter'),);}
}

3. 在 WidgetB 中获取状态

另一个组件监听 counterProvider 的状态变化,并实时显示最新值。

widget_b.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'counter_provider.dart';class WidgetB extends ConsumerWidget {const WidgetB({super.key});Widget build(BuildContext context, WidgetRef ref) {// 监听 counterProvider 的状态变化final counter = ref.watch(counterProvider);return Text('Current Count: $counter',style: Theme.of(context).textTheme.headlineMedium,);}
}

4. 整合到主页面

将两个组件放在同一个页面中测试。

main.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'widget_a.dart';
import 'widget_b.dart';void main() {runApp(const ProviderScope(child: MyApp()));
}class MyApp extends StatelessWidget {const MyApp({super.key});Widget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('Riverpod Example')),body: const Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [WidgetB(), // 显示状态SizedBox(height: 20),WidgetA(), // 更新状态],),),),);}
}

效果

  • 点击 WidgetA 的按钮时,Counter 状态会递增。
  • WidgetB 会自动刷新并显示最新的计数器值。

关键点说明

  1. ref.read() vs ref.watch()

    • ref.read():一次性读取状态(适合触发方法,如按钮点击)。
    • ref.watch():监听状态变化并自动重建组件(适合显示数据)。
  2. .notifier

    • 通过 ref.read(counterProvider.notifier) 获取 Counter 实例,才能调用其方法(如 increment())。
  3. ProviderScope

    • 必须在应用的根节点包裹 ProviderScope,这是 Riverpod 的核心上下文。

通过这个例子,你可以清晰看到 Riverpod 的状态更新跨组件共享状态的流程。

http://www.dtcms.com/a/522786.html

相关文章:

  • 怎么做网站教程 用的工具朋友圈软文范例
  • 网站建设丿金手指专业上海传媒公司在哪个区多
  • 文档管理软件seo为什么要进行外部优化
  • 合肥企业网站建设专家百度关键词搜索怎么弄
  • 东阳做网站的公司wordpress 弹框
  • 网站与网络的区别建设电子商务网站流程图
  • 怎么做旅店网站网站转化率分析工具
  • asp网站 seo淮北做网站电话
  • 网站做等保是什么意思广告发布需要许可证吗
  • 河北省住房城乡建设厅网站世界500强企业logo
  • 手机网站建设哪家好如何修改代码wordpress
  • ci框架建设网站案例优秀网站建设服务
  • 网站 盈利东莞人才招聘网58
  • 手机建个人网站wordpress 搜索mysql
  • idc销售网站模板教育培训网站建设方案
  • 网站备案密码有什么用北京病例最新消息今天
  • 单位如何建设网站wordpress+小说+采集
  • 设计站网址建立快捷方式
  • 药企做网站学做西点的网站
  • 德阳市建设局网站地址如何发布自己的网站
  • 把自己做的网站开放到外网怎样建一个自己的网站
  • 建设银行官方网站个人系统板块修改刷链接浏览量网站
  • 学生网站建设首页wordpress技术博客
  • 什么网站开发外贸客户上海十大保安公司排名
  • 太原做彩票网站公司制作短视频的app哪个好
  • 有什网站可以做设计赚钱在手机上自建网站怎么弄
  • 域名及密码登录域名管理网站免费入口
  • 网站做美食视频挣钱吗全国建筑人员证书查询
  • 沈阳网站建设聚艺科技发来贵州省建设厅网站
  • 网站加速器下载wordpress个人博客毕业设计