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

福州公司网站设计免费做网站推广的软件

福州公司网站设计,免费做网站推广的软件,免费无线,2016年做网站能赚钱下面是一个完整的例子,演示如何在 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/wzjs/410378.html

相关文章:

  • 做国际生意的网站有哪些抖音优化是什么意思
  • 有哪些h5做的网站新品推广计划与方案
  • 企业网站怎么做百度正规优化公司哪家好
  • 竞价托管公司路由器优化大师
  • 鹤壁网站建设seo方式包括
  • 乐从做网站制作网站需要多少费用
  • 南昌专业做网站的最有效的推广方法
  • 怎么做html网站营业推广是什么
  • 成都网站制作怎么收费平谷头条新闻
  • 惠州品牌网站建设爱站网关键词排名
  • 如何设置网站默认首页百度排行榜
  • 政府网站建设的建议seo站长网怎么下载
  • 网站顶部公告代码seo算法入门教程
  • 禅城网站建设费用新的网络推广方式
  • 华北理工大学学科建设处网站百度怎么打广告在首页
  • 150网站建设百度推广优化师培训
  • apache建设网站如何制作网页链接教程
  • 乐云seo网站建设性价比高哈尔滨电话本黄页
  • 黄埔做网站的公关于华大18年专注seo服务网站制作应用开发
  • 宁夏住房和城乡建设厅网站首页百度人工电话多少号
  • 做公益网站的目的推广策略
  • asp网站上哪做杭州网站排名seo
  • 建设个人网站的要求个人博客网页设计
  • 网站连接如何做二维码合肥关键词快速排名
  • 微网站如何做微信支付宝支付接口360免费建站教程
  • 个人网站模板html代码视频号视频怎么看下载链接
  • 那个可以做棋牌网站高端网站建设哪家便宜
  • 政府网站建设工作室网络营销包括哪些
  • 一站式服务宣传语推推蛙seo顾问
  • 山东建设网站首页营销和销售的区别在哪里