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

南川集团网站建设软文推广案例

南川集团网站建设,软文推广案例,网站建设 工单,从零开始做网站内容运营下面是一个完整的例子,演示如何在 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/122907.html

相关文章:

  • 有电脑网站怎样建手机互联网营销是什么意思
  • 常州企业网站建站模板广州seo工程师
  • 网站上的截图怎么做太原seo
  • 坂田网站建设流程青岛seo推广
  • 网站如何做视频教程seo推广怎么收费
  • 网站怎么做英语和中文的泰州百度关键词优化
  • 网站设计师培训中心电商网站建设哪家好
  • 绵阳做网站优化seo教程下载
  • 网站内链少改怎么做seo标题关键词怎么写
  • 汉南做网站今日刚刚发生的新闻
  • 网站建设公司应该怎么转型软文代写公司
  • 最专业 汽车网站建设天津债务优化公司
  • wordpress 前台打不开债务优化是什么意思
  • 网站建设公司资讯推广计划怎么做推广是什么
  • 平凉市建设厅官方网站无锡哪里有做网站的
  • 优质网站建设公司哪家好百度首页优化
  • 太原市做网站好的科技公司bt蚂蚁磁力
  • b2b网站一个人可以做吗怎么制作链接网页
  • 如何建立一个免费的网站网站多少钱
  • 商标查询官方入口seo网络推广企业
  • 免费网站模板之家推广软文平台
  • 大型网站制作百度搜索结果优化
  • 网站空间租赁费用成都百度推广
  • 重庆市建设工程信息网官方网站关键字搜索引擎
  • 过期域名网站上海野猪seo
  • 机械产品做哪个网站seo是什么简称
  • 网站群建设目标青岛网站设计公司哪家好
  • 广州天河区做网站抚州seo排名
  • 专业网站设计服务商产品网络营销策划方案
  • 做网站一定要psd吗搜索引擎优化包括哪些