关键词:
【中文标题】如何更高效地编写这个 Flutter 代码?【英文标题】:How to write this Flutter code more efficiently? 【发布时间】:2020-01-18 07:41:47 【问题描述】:正如您在第一部分中看到的,我正在检查某个值是否包含在来自 Firestore 的文档中并返回一个布尔值。现在我在构建中调用该函数,并根据该返回值更改芯片颜色(第二部分)。
现在的问题可能是因为我在构建函数中调用它,所以它在构建过程中被连续调用,这让我在 Firestore 中读取了大量数据,或者该函数效率低下。我怎样才能更有效地写这个?
checkAtt(String name, id , date) async
var ref = _db.collection('subjects').document(id).collection('Att').document(date);
var docref = await ref.get();
return docref.data.containsKey(name)
?true
:false;
class PresentChip extends StatefulWidget
final candidate;
PresentChip(
this.candidate,
Key key,
) : super(key: key);
@override
_PresentChipState createState() => _PresentChipState();
class _PresentChipState extends State<PresentChip>
var isSelected = false;
var c = false;
@override
Widget build(BuildContext context)
final SelectSub selectSub = Provider.of<SelectSub>(context);
final Date date = Provider.of<Date>(context);
db.checkAtt(widget.candidate, selectSub.selectsub, date.datenew).then((result)
print(result);
setState(()
c = result;
);
);
return Container(
child: ChoiceChip(
label: Text('Present'),
selected: isSelected,
onSelected: (selected)
db.gibAtt(
widget.candidate, selectSub.selectsub, date.datenew.toString());
setState(()
isSelected = selected;
);
,
backgroundColor: !c ?Colors.red :Colors.green ,
selectedColor: !c ?Colors.red :Colors.green ,
));
【问题讨论】:
您应该在问题中发布图片,而不是在问题的 cmets 中 @Durdu 这样吗? 你应该直接添加代码,而不是图像。 @Durdu 好的....已编辑 我已经编辑了这个问题。以前它被表述为“任何人都愿意做一些免费的工作”,我现在已经改变了它,所以重点是你,这个帖子的作者,如何能够达到预期的结果。差异可能是微妙的,但它可以解释四次投反对票。 【参考方案1】:假设您只想从 firestore 读取一次,您需要一个 FutureBuilder。
return Container(
child: FutureBuilder(
future: db.checkAtt(widget.candidate, selectSub.selectsub, date.datenew),
builder: (context, snapshot)
if(snapshot.hasData)
return ChoiceChip(
...
backgroundColor: !snapshot.data ?Colors.red :Colors.green,
selectedColor: !snapshot.data ?Colors.red :Colors.green,
);
//Return another widget if the future has no data
return Text('Future has no data');
)
);
如果您需要您的 UI 对来自 Firestore 的更改做出反应,请使用 StreamBuilder。
您可以从构建方法中删除以下块:
db.checkAtt(widget.candidate, selectSub.selectsub, date.datenew).then((result)
print(result);
setState(()
c = result;
);
);
【讨论】:
如何使用make更高效地编译c文件
】如何使用make更高效地编译c文件【英文标题】:Howtocompilecfilesmoreefficentwithmake【发布时间】:2016-07-1219:05:17【问题描述】:我目前正在编写一个玩具操作系统。由于有很多c文件gcc命令不会改变(文件名除外),有没有办法自动... 查看详情
如何更优雅地编写这个 SQL 查询(加入 + 最大查询)
】如何更优雅地编写这个SQL查询(加入+最大查询)【英文标题】:HowtowritethisSQLquerymoreelegantly(joining+maxquery)【发布时间】:2021-03-1805:20:26【问题描述】:好的,我正在使用w3school中的以下示例https://www.w3schools.com/sql/trysql.asp?filename... 查看详情
如何在 C# 中高效地编写大型文本文件?
】如何在C#中高效地编写大型文本文件?【英文标题】:HowtoefficientlywritealargetextfileinC#?【发布时间】:2011-03-2508:20:09【问题描述】:我正在C#中创建一个方法,它为GoogleProductFeed生成一个文本文件。提要将包含超过30,000条记录,... 查看详情
《effectivec#》系列之(零)——概要
...授了许多在实际开发中非常有用的技巧和方法,例如:1.如何避免装箱和拆箱操作的性能损失;2.如何正确地重载运算符;3.如何使用yield关键字来简化迭代器的编写;4.如何正确地处理异步代码中的异常;5.如何避免死锁和竞态条... 查看详情
如何更轻松地实现一个 Flutter 布局?
】如何更轻松地实现一个Flutter布局?【英文标题】:Howtoimplementaflutterlayoutmoreeasily?【发布时间】:2019-06-0901:28:30【问题描述】:我有一个布局效果,不知道怎么实现更方便?我有六个或N个子小部件,放置在一个父小部件中,... 查看详情
如何在 C++ 中编写高效的遗传算法
】如何在C++中编写高效的遗传算法【英文标题】:HowtowriteefficientGeneticAlgorithmsinC++【发布时间】:2011-10-2523:50:09【问题描述】:我正在尝试为canonicalgeneticalgorithm编写一个C++程序,其中有一群长度为N的个体(染色体),其中每个... 查看详情
chatgpt编写模式:如何高效地将思维框架赋予ai?(代码片段)
如何理解Prompt?PromptEnginneeringprompt通常指的是一个输入的文本段落或短语,作为生成模型输出的起点或引导。prompt可以是一个问题、一段文字描述、一段对话或任何形式的文本输入,模型会基于prompt所提供的上下文和... 查看详情
如何使用 Laravel 高效地制作网页和移动游戏
】如何使用Laravel高效地制作网页和移动游戏【英文标题】:HowtoefficientlymakeagameforwebandmobilewithLaravel【发布时间】:2016-11-2509:40:15【问题描述】:几年前,我开始制作自己的浏览器游戏,使用原始PHP和一点Javascript。就是这样。但... 查看详情
如何使用 Ansible 官方模块更高效地向 VMware VM 主机添加磁盘?
】如何使用Ansible官方模块更高效地向VMwareVM主机添加磁盘?【英文标题】:HowtoadddisktoVMware\'sVMhostmoreefficientlybyusingAnsibleofficalmodule?【发布时间】:2020-03-0610:00:08【问题描述】:环境操作系统版本:CentOS7.5Ansible版本:2.8.4和python2.7... 查看详情
React:我怎样才能让这个 React 组件写得更好更高效?
】React:我怎样才能让这个React组件写得更好更高效?【英文标题】:React:HowcanImakethisReactComponentwrittenbettertobemoreefficient?【发布时间】:2021-11-0617:04:08【问题描述】:我觉得我在重复onIncrement中的代码,并且可以更好地重构它。max... 查看详情
如何编写更棒的代码
...优雅的代码,将来说不定会给你节省更多的时间。那么,如何编写更棒的代码,下面是11条基本规则:保 查看详情
编写高效的jquery代码
...更加的随心所欲,所以只有遵循良好的规范才会让代码更高效,更健壮。jQuery的编写原则:一、不要过度使用jQuery1.jQuery速度再快,也无法与原生的javascript方法相比,而且建立的jQuery对象包含的信息量很庞大。所以有原生方法可... 查看详情
阿里面试官:mysql如何设计索引更高效?(代码片段)
...评论的时候我发现有个网友的提问我觉得很有意思:帅丙如何设计一个索引?你们都是怎么设计索引的?怎么设计更高效?我一想索引我写过很多了呀,没 查看详情
如何写好flutter代码?
本文着重分享闲鱼Flutter团队在基础代码规范方面所做的一些实践。缘起代码规范作为一个研发团队的核心基因,怎样在团队中高效传承是一个挑战。Flutter作为移动端持续火热的新型框架,正吸引越来越多的研发同学进入... 查看详情
如何在 Flutter 中将按钮图标更改为动画文本?
】如何在Flutter中将按钮图标更改为动画文本?【英文标题】:HowtoChangeButtonIcontoAnimatedTextinFlutter?【发布时间】:2021-07-1116:46:16【问题描述】:我在这个主题上遇到了一些问题。我有一个材质按钮。正如您在下面的代码中看到的... 查看详情
STRAPI 是不是有助于开发 REST api 以轻松且经济高效地连接 Flutter 应用程序
】STRAPI是不是有助于开发RESTapi以轻松且经济高效地连接Flutter应用程序【英文标题】:DoesSTRAPIhelpfultodevelopRESTapitoconnectFlutterappeasilyandcosteffectivelySTRAPI是否有助于开发RESTapi以轻松且经济高效地连接Flutter应用程序【发布时间】:2020... 查看详情
提升你的技能:编写干净高效的javascript的7个技巧
编写干净的代码对每个开发人员来说都是必不可少的,因为它使代码易于阅读、理解和维护。干净的代码使团队中每个人的生活更轻松,您的代码更不容易出错,并且更容易添加新功能。在本教程中,我将介绍7个技巧,以便您... 查看详情
如何更好地理解如何阅读 Flutter 代码? [关闭]
】如何更好地理解如何阅读Flutter代码?[关闭]【英文标题】:HowdoIgetabetterunderstandingonhowtoreadFluttercode?[closed]【发布时间】:2021-10-1618:09:08【问题描述】:问题是我对程序的工作流程感到困惑,然后是我们导航到的页面以及我们从... 查看详情