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

网站建设寮步中国最好的建筑公司

网站建设寮步,中国最好的建筑公司,广告在线设计制作,广州网站建设流程图任何的app都避免不了state的全局管理,原生也好,vue/react/angular也好,都会遇到全局state的业务 如何在flutter中,管理好全局的state也是我们需要考虑的问题。 官网中已经给我们列出了很多的解决方案, 参考地址&…

任何的app都避免不了state的全局管理,原生也好,vue/react/angular也好,都会遇到全局state的业务

如何在flutter中,管理好全局的state也是我们需要考虑的问题。

官网中已经给我们列出了很多的解决方案,
参考地址:https://docs.flutter.cn/data-and-backend/state-mgmt/options

下面我们来实现下跨页面跨组件全局state共享,使用的第三方库是Get,官网文档地址 get 4.7.2

实现效果

模拟业务需求,在消息页面添加购物数据,在个人中心页面能同步购物数据,同时点击该条记录可以模拟清空购物车数据
请添加图片描述

代码实现

安装依赖,没有版本号,可以忽略不写

dependencies:flutter:sdk: fluttermaterial_design_icons_flutter: ^5.0.5955-rc.1get:

在lib文件下新建一个专门管理state的文件夹
在这里插入图片描述
在index.dart中创建我们需要的state

import 'package:get/get.dart';class CounterController extends GetxController{var count = 100.obs;increment() => count++;resetCount() => count.value = 0;
}

包括页面需要展示的数据count,以及我们需要改变数据的两个方法

准备工作完成,我们在widge中使用方法

  • 修改根文件,我这里是main.dart
    在这里插入图片描述
    使用GetMaterialApp替换MaterialApp
void main() => runApp(GetMaterialApp(home: Home()));

在消息页面,我们使用定义好的state

import 'package:flutter/material.dart';
import 'package:flutter_app_01/store/index.dart';
import 'package:get/get.dart';class MessagePage extends StatefulWidget {const MessagePage({super.key});static const  String title = "消息";State<MessagePage> createState() => _MessagePageState();
}class _MessagePageState extends State<MessagePage> {final CounterController c = Get.put(CounterController());Widget build(BuildContext context) {return  Center(child:  Column(children: [Obx(() => Text("Clicks: ${c.count}")),ElevatedButton(onPressed:(){// Navigator.pushNamed(context, "/message-detail",arguments: { "id": "456"});c.increment();print(c.count);},// Navigator.push(context, MaterialPageRoute(builder: (context) => const MessageDetailPage(id:'123')));child: Text('添加到购物车'),), ],));}
}

在个人中心页面再次使用定义好的state

import 'package:flutter/material.dart';
import 'package:flutter_app_01/pages/mock/Album.dart';
import 'package:flutter_app_01/store/index.dart';
import 'package:flutter_app_01/utils/request.dart';
import 'package:get/get.dart';class UserCerterPage extends StatefulWidget {const UserCerterPage({super.key});static const  String title = "个人中心";State<UserCerterPage> createState() => _UserCerterPageState();
}class _UserCerterPageState extends State<UserCerterPage> {late Future<Album> futureAlbum;Album album = Album(userId: 0, id: 0, title: '');void initState(){ super.initState();futureAlbum =  fetchAlbum();futureAlbum.then((value) => setState(() {album = value;}));}// 获取到对应的statefinal CounterController c = Get.find();Widget build(BuildContext context) {return Container(decoration: BoxDecoration(// color: Colors.red),child: ListView(children: [ListTile(leading: Icon(Icons.person),title: Text('个人资料'),onTap: () => {Navigator.pushNamed(context, '/profile')},),ListTile(leading: Icon(Icons.settings),title: Text('设置'),),ListTile(leading: Icon(Icons.unarchive_rounded),title: Text('TDdesign ui'),onTap: () => {Navigator.pushNamed(context, '/design-td')},),ListTile(leading: Icon(Icons.logout),title: Text('退出登录'),),ListTile(leading: Icon(Icons.exit_to_app),title: Text(album.title),),ListTile(leading: Icon(Icons.exit_to_app),// 使用Obx展示Get处理过的数据title: Obx(() => Text("Clicks: ${c.count}")),onTap: () {c.resetCount();},),],),);}
}

注意:在展示Get处理过的数据时,如果没做修改处理页面是不会更新的,但是打印的结果确实是最新的,是不是跟react、vue很像了
在这里插入图片描述
所以,我们必须在要使用这个数据的地方,改为title: Obx(() => Text("Clicks: ${c.count}")),这种显示方式,才能更新生效。

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

相关文章:

  • 网站建设协议 合同组建一个网站
  • 订单网站模板想做代理怎么找商家
  • 网站 备案 注销 影响wordpress密钥
  • 南京凯盛建设集团有限公司网站wordpress本地环境迁移步骤
  • 东莞商城网站建设公司小米网站建设案例
  • 建设一个网站需要哪方面的费用qq是哪个公司开发的软件
  • 无锡网站制作那些建站公司排名前十名
  • 宝应建设局网站毕业设计做购物网站的要求
  • 不用域名做自己的网站管理软件有哪几种
  • 长沙专门做网站公司wordpress 作品
  • 太原手机网站开发天眼查在线查询
  • 搜索引擎网站推广定义腾讯企点怎么用
  • 网站建设功能点价格佛山债优化公司
  • 多个网站做计划Wordpress带商城的主题
  • 东源县住房和城乡建设部网站世界十大软件公司排名
  • 青岛网站建设公教学资源系统网站建设方案
  • 网络公司做网站的合同免费看舆情网站
  • 网站建设前期分析wordpress注册问题
  • 微网站 具有哪方面的优势代理公司注册需要多少钱
  • 淘宝网发布网站建设没有网站可以域名备案
  • 如何给网站备案电脑版网页版登录入口
  • 网站侧边 跟随 样式线上营销网站设计
  • 建设官方网站的作用嵊州建设局网站
  • 网站如何编辑建设企业网站官网企业网银
  • 个人网站免费建设美妆网站怎么做
  • 电子商务网站建设设计方案自己注册公司一年多少费用
  • 网站建设在哪里网站开发毕业答辩
  • 网站建设需要懂什么网件路由器app 中文版
  • 湖南企业网站营销设计网站可以做哪些广告语
  • 响应式网站移动端排名百度商店