微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter / Dart:地图列表与小部件列表?哪个更好?

如何解决Flutter / Dart:地图列表与小部件列表?哪个更好?

我正在创建一种“交互式字典”。显然,字典将由 WORDS(作为条目)组成。所以我定义了“单词”是什么:一系列元素:一个主要的英语单词、一个同义词列表、一个反义词列表、法语翻译等......

到目前为止,我已经创建了一个包含所有这些字段的“WORD WIDGET”。 因此,我的 wordBank 列表将包含一个“Word 小部件列表”。

我想知道这是否是一种组织数据的好方法,或者 MAPS 列表是否会更好? 使用列表、排序、获取元素等时性能会有差异吗?

这是我构造它的方式:

enum Nature {
  nom_masc,nom_fem,adjectif,adverbe,verbe,verbe_irr,preposition,}

class Word {
  final int id;
  final Nature nature;
  final String theme;
  final List<String> french; // the first element is the primary word
  final List<String> english; // the first element is the primary word
  final String image;
  final String sound; // to be used as label2 in case of input type question
  final String wDef; // a written definion of the main word
  final String oDef; // an oral deFinition of the main word
  final String phon; // a phonetic transcription of the word

  Word({
    @required this.id,@required this.nature,@required this.theme,@required this.french,@required this.english,this.image,this.sound,this.wDef,this.oDef,this.phon,});
}
```

解决方法

总是喜欢核心数据列表而不是 UI 小部件列表。有很多优点:

  1. 保持后端和前端分离始终是一个好习惯。

  2. 保留地图列表将帮助您在应用的任何位置重复使用该列表中的数据。比如说你想制作另一个相同数据的列表,但小部件设计会有所不同,或者你可能只想在地图中显示一些数据,这些条件可以通过地图列表而不是小部件列表轻松满足.

  3. 比较每个的数据类型。 Map 类型的对象将占用更少的空间,因为它只包含数据。但另一方面,Widget 的对象会占用大量空间,具体取决于 Widget 树的深度和子 Widget。

  4. 如果您保留地图列表,则可以轻松自定义结果列表视图。假设在显示 ListView 时,您希望根据同一页面上存在的一些其他数据为子小部件提供不同的颜色。使用 Map 列表会更容易和更简单地执行。

还有更多优点,而且它使代码保持干净且易于管理。

,

根据我从您的描述中了解到的情况,有几点值得一提:

  1. 没有小部件列表,而是有任何数据结构来存储数据(列表、映射任何内容取决于用例)并将其包装到小部件中,同时向用户显示。

  2. 现在根据您的用例存储这些数据,使用地图可能是有益的,因为当您在字典中查询任何您想要的词时,它可以减少搜索时间,只有一个唯一的词特定的拼写。列表适用于存储任何数据,当您对其中存储的数据没有任何特殊条件(例如这里的字典)时,因此每次搜索元素时都会执行线性搜索。

因此,您可以拥有单词(字符串)到单词对象的映射,并且基于您想要的单词,您可以查询该映射、检索数据并将该数据包装到 WordWidget 中,同时将其显示给用户。>

此外,作为软件开发的一般做法,我们尽量保持松散解耦。因此,提供数据的层(或数据结构)应该仅用于此目的,而获取数据并将其包装到 UI 元素中的层应该是分开的。这样,您的代码也可以根据未来的任何用例进行维护和扩展。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。