Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >动态添加页间数据的颤振

动态添加页间数据的颤振
EN

Stack Overflow用户
提问于 2020-11-20 22:30:20
回答 1查看 636关注 0票数 0

首页

因此,我有一个ListTile,我想发送到另一个页面,让我们称之为‘购物车’页面,为了演示目的。它位于第一页上的一个单独的函数中,在构建器之上,稍后作为一个函数调用构建器。这是它的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
return ListTile(
                  trailing: Container(
                    padding: EdgeInsets.only(top: 15.0),
                    child: IconButton(
                        icon: Icon(Icons.add),
                       
                        onPressed: () => MaterialPageRoute(
                              this i am not sure how to access cart page
                              builder: (context) =>
                                  Cart(food.name, food.price),
                            )),
                  ),

注意,Navigator.push()在onPressed上是如何不存在的,因为我只希望数据被发送到购物车页面。

这是将数据发送到另一个页面上的“购物车”屏幕的函数,它可以工作。我的问题是,我还希望在AppBar上(在构建器下面)有一个按钮,该按钮只传递到该页面而不传递任何数据(上面的图标只应该传递数据onPressed,它是第一页上的ListTile项)。

下面是第一页中AppBar图标的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
return Scaffold( 
appBar: AppBar(
        actions: [
          IconButton(
            icon: Icon(Icons.add_shopping_cart, color: Colors.white),
           
            onPressed: () => print('This needs to lead to cart page.'),
            //I tried doing the Navigator.push route, but it asks for arguments, but I just want
            //to go to the page and not pass any arguments from here
            //this needs to lead to cart page
          ),
        ],)

购物车页

这是应该推送数据的“购物车”页面,理想情况下,我只希望将该ListTile项作为列表块添加到购物车中,与页面1中的列表块相同。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 class Cart extends StatefulWidget {
  
  
  final String foodName;
  final String foodPrice;
  Cart(this.foodName, this.foodPrice);

  @override
  _CartState createState() => _CartState();
}

class _CartState extends State<Cart> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Cart'),
        centerTitle: true,
      ),
      body: Center(
          child: Container(
              child: Text('${widget.foodName}, ${widget.foodPrice}'))),
    );
  }
}

问题是,我想要有不同的食物选择,有时添加'food.description‘或类似的东西,甚至是一个不同的类,如’酒后.名称‘。这是我在这个问题上的精彩的绘画演示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 23:18:06

为此,您应该使用状态管理包。当用户按下“添加”按钮时,提供程序、Bloc、Redux等。您可以向主源添加数据,并使用这些包通知侦听器。这里有一个提供程序包的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class CartItemsModel extends ChangeNotifier {
  List<String> _cartItems = [];

  List<String> get cartItems => _cartItems;

  addCartItem(String item) {
    _cartItems.add(item);
    notifyListeners();
  }
}

class MainPage extends StatelessWidget {
  const MainPage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Provider(
      create: (c) => CartItemsModel(),
      child: MaterialApp(
        home: Consumer<CartItemsModel>(
          builder: (c, model, _) => Scaffold(
            appBar: AppBar(
              actions: [
                IconButton(
                  icon: Column(
                    children: [
                      Icon(Icons.add_shopping_cart_rounded),
                      Text('added items' + model.cartItems.length.toString()),
                    ],
                  ),
                  onPressed: () {
                    Navigator.of(context).push(MaterialPageRoute(
                      builder: (c) => SecondPage(),
                    ));
                  },
                ),
              ],
            ),
            body: Column(
              children: [
                Text('CartItems Length:' + model.cartItems.length.toString()),
                RaisedButton(
                  onPressed: () {
                    model.addCartItem('Example Cart Item');
                  },
                  child: Text('ADD ITEM'),
                ),
                RaisedButton(
                  onPressed: () {
                    Navigator.of(context).push(MaterialPageRoute(
                      builder: (c) => SecondPage(),
                    ));
                  },
                  child: Text('Go another page'),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

class SecondPage extends StatelessWidget {
  const SecondPage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Consumer<CartItemsModel>(
      builder: (c, model, _) => Scaffold(
        body: Column(
          children: model.cartItems
              .map((e) => ListTile(
                    title: Text(e),
                  ))
              .toList(),
        ),
      ),
    );
  }
}

在你的主要功能运行这个应用程序,看看它是如何工作的。当您按add item按钮时,它会将‘示例购物车项目’添加到列表中,它位于provider类,provider类将通知其他侦听器更新其状态。欲了解更多信息:https://pub.dev/packages/provider

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64940464

复制
相关文章
EasyUI 动态添加标签页(Tabs)
我们使用 'exists' 方法来判断 tab 是否已经存在,如果已存在则激活 tab。如果不存在则调用 'add' 方法来添加一个新的 tab 面板
故久
2019/09/29
1.4K0
案例:数控机床主轴校准与颤振监测系统
提高生产数量与产品质量始终是制造业努力追求的目标,工业4.0更勾勒出智能制造的美好愿景,促使被制造业视为是重要生产设备的CNC工具机(数控机床)也得因应这样的趋势不断地精益求精。而数控机床制造商在积极改善自家机器性能并提升加工精度以符合客户需求的过程中,机器校准正确与否是影响加工精度的重要因素之一。但一直以来制造业都是靠累积多年经验的老师傅来进行机器校准,工厂每日必须先以这种传统作法来检查设备才能正式开工;如果该厂需要制造的产品种类较多,每一次产线调整时还得再次为机器重新设定与校准。如此不科学的作业模式既繁琐又费时,一旦作业程序有所疏失就会发生加工精度失准的问题。
SHOUT
2022/05/31
2.9K0
案例:数控机床主轴校准与颤振监测系统
镗刀在加工中出现颤振的主要原因分析
镗刀是采用的数显读数屏的精密镗头,在使用精镗刀加工时,也会出现不同的问题。加工中心镗孔时由于切屑的流出方向在不断地改变,所以刀尖、工件的冷却以及切屑的排出都要比车床加工时难的多。特别是用卧式加工中心进行钢的盲孔粗镗加工时,尤为困难。镗孔加工时最常出现的、也是最令人头疼的问题是颤振。今天我们来分析下镗刀发生颤振的主要原因有哪些:
lrglu
2022/05/16
2.6K0
镗刀在加工中出现颤振的主要原因分析
MCM数控机床切削颤振监测与大数据分析系统构建(一)
在金属切削加工过程中,刀具与工件之间剧烈的自激振动通常被称为“颤振”。机床颤振会使加工过程变得不稳定,造成加工表面质量和金属切削率的下降,引起加工工件的表面精度和光洁度下降,降低刀具使用寿命和生产率,严重时甚至会破坏刀具和机床。因此,颤振成为提高机床加工能力的最主要障碍。
SHOUT
2022/05/31
2.7K0
MCM数控机床切削颤振监测与大数据分析系统构建(一)
碎片的动态添加
碎片的动态添加 1.添加another_right_fragment.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a
Dream城堡
2018/12/14
2.1K0
碎片的动态添加
计算机考古:发现世界上最古老的用户手册
点击上方蓝色“程序猿DD”,选择“设为星标” 回复“资源”获取独家整理的学习资料! 来源 | https://www.oschina.net/question/4518194_2319246 世界上保存最久的计算机被认为是 Zuse Z4,现在被保存在慕尼黑的德国博物馆。Zuse Z4制造于1945年,在1949/1950年有大修和扩展,1950年至1955年间在苏黎世联邦理工学院(ETH Zurich)外借运行。但 Z4的操作说明书丢了很长时间,前几天,有人说她朋友的父亲保存着罕见的历史文件RenéBo
程序猿DD
2023/04/04
1K0
计算机考古:发现世界上最古老的用户手册
意外惊喜:现存最古老计算机的操作手册重见天日
Zuse Z4 可以说是目前世界上现存的最古老的计算机。这台数字计算机建造于 1945 年,在 1949 到 1950 年间进行过大修和扩建。
机器之心
2020/10/27
2.1K0
意外惊喜:现存最古老计算机的操作手册重见天日
为自己的APP添加启动页
打开APP的时候会有一个启动过程 ,为了较好的体验,一般加载一个启用页(有的是广告······)。 最熟悉的打开微信时候一个地球图片,这篇文章简单介绍怎么加载该图片。
小尘哥
2018/08/15
6280
为自己的APP添加启动页
博客添加待办清单页
参考:博客添加待办清单页 1. 前言 要做的事还有很多,想做的事源源不断,那就都记录在博客里吧,ToDoList。 2. 实现 新建 [blogroot]\themes\butterfly\layout\includes\page\todolist.pug 添加以下代码 #todolist-box .page-top-card(style='background-image: url(/img/todo.webp);') .content-item-tips 想做清单
777nx
2023/05/02
1790
jquery 动态添加一行数据,支持动态删除
<tr id="templateTr" style="display: none;"> <td>联系人</td> <td><input type="text" name="conName" disabled="disabled" style="border: 0; background: #fff;box-shadow: none;cursor:text;" class="form-control" ></td> <td>部门</td> <td><input type="text" name="conDepart" disabled="disabled" style="border: 0; background: #fff;box-shadow: none;cursor:text;" class="form-control" ></td> <td>联系电话</td> <td><input type="text" name="conTel" disabled="disabled" style="border: 0; background: #fff;box-shadow: none;cursor:text;" class="form-control" ></td> <td>邮箱</td> <td><input type="text" name="conEmail" disabled="disabled" style="border: 0; background: #fff;box-shadow: none;cursor:text;" class="form-control" ></td> <td><button type="button" class="button2 delrow">删除</button></td> </tr>
用户5640963
2019/07/25
2.7K0
机器学习||CNC健康诊断云平台智能分析系统
机床被称为工业母机, 中国拥有世界最大的机床市场, 2016年底全国机床产量达到 270000 台,并每年高速的成长,预计到 2020 年机床年产量将会达到 304000 台。制造业需要大批高效、高性能、专用数控机床和柔性生产线,因此推进机床智能化,实现设备联网、健康诊断并利用云计算和大数据技术进行预测性维护与集群管理成为机床产业的重要议题之一。
SHOUT
2022/05/31
4.5K0
机器学习||CNC健康诊断云平台智能分析系统
设备健康监诊系统动态演示手册
设备健康诊断系统已成为智能工厂的重要组成部分,现场机器千差万别,一套开放架构可组态的系统成为现场运维工程师,设备开发技术人员的迫切需求。本系统演示针对旋转机械主轴部件进行健康诊断。
SHOUT
2022/05/31
2.8K0
设备健康监诊系统动态演示手册
当车削加工时出现振刀打刀现象该如何处理?
机床在加工过程中震动,最常见于车床,镗床加工过程中,造成工件表面有颤纹,返工率、废品率高,伴有振刀打刀现象。机床振动原因一般是机床–工件–刀具三个系统中任一个或多个系统刚性不足,振动、振刀产生时,我们该从哪些方面入手排查解决这类问题。
lrglu
2022/05/16
3.6K0
当车削加工时出现振刀打刀现象该如何处理?
js动态添加div
因为每个input标签的name如果相同的话, 在后端接收的时候会出错, 所以我的解决办法就是在name后加上一个数字, 后端用一个循环进行接收
烟草的香味
2019/07/25
24.5K0
nginx动态添加模块
有时候我们在环境部署nginx时,由于环境初期较简单,随着后期业务发展,需要的功能越来越多时,可能我们最开始编译安装的nginx已经无法满足我们现在的需求了,比如说,我们想使用nginx的缓存功能,想使用nginx的连接限制模块等,这时我们就需要在不覆盖之前已经编译好的nginx来动态添加所需的模块了。
dogfei
2020/07/31
2K0
vue动态添加行
html <div id="app"> <div @click="addData">点击添加行</div> <div class="box1"> <table> <tr> <th width="10%">序号</th> <th width="25%">姓名</th> <th width="25%">性别
用户1349575
2022/02/17
3.9K0
celery动态添加任务
celery是一个基于Python的分布式调度系统,文档在这 ,最近有个需求,想要动态的添加任务而不用重启celery服务,找了一圈没找到什么好办法(也有可能是文档没看仔细),所以只能自己实现囉
py3study
2020/01/02
2.7K0
Nginx动态添加模块
有时我们需要在现有的web服务器上增加新的模块实现更为丰富的功能,Nginx算是比较常用的web服务器,但是nginx也不仅仅只可以做web服务器,只要有对应的插件还可用作反向代理、即时通讯、文件下载、流媒体服务等功能,如果已经安装好了Nginx又不想重新安装覆盖的前提下如何新增模块,需要怎么弄呢?
子润先生
2021/07/06
2.5K0
点击加载更多

相似问题

页间颤振共享组

25

使颤振页滚动和页眉动态

15

航路间颤振导航移除

12

颤振中空格间的文本

21

在颤振中动态添加行

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文