BLOG
Records
Records in Flutter are data structures introduced in Dart 3.0 that allow multiple values to be stored in a single object without needing to create a new class. They make it easy to store and pass groups of data, such as function results, in a simple and readable way.
Records
We can use records to store or pass multiple related values without needing to create a new class. They are especially useful in cases like:
- Returning multiple values from a function – instead of creating a class or returning a map, we can use a record to pass function results in a concise way.
- Creating temporary data structures – records are great for storing data that is only needed in a single place or context.
- Replacing tuples – with records that have named fields, we can write more readable code, eliminating the need to refer to positions (indexes) in a tuple.
Differences between a record and a map
Similarities
- Data Storage: Both structures allow storing multiple values.
- Access to Values: Both enable accessing values using identifiers (named positions in
Record
and keys inMap
). - Usage in Dart: Both are available and useful for representing data in Dart, although suited for different scenarios.
Differences
Data Structure:
Record
: Fixed structure with a defined number of positions that cannot be dynamically modified.Map
: Dynamic key-value structure, where pairs can be freely added or removed.
Typing:
Record
: Statically typed, allowing performance optimization and reducing type errors.Map
: Dynamic and flexible, allowing values of any type.
Access to Values:
Record
: Accessed by named positions (e.g.,.name
) or position indices (e.g.,$1
,$2
).Map
: Accessed by keys, which can be any type, e.g.,map['name']
.
Flexibility and Modification:
Record
: The number and names of elements cannot be changed after creation.Map
: Key-value pairs can be dynamically added, removed, and modified.
Purpose:
Record
: Ideal for representing complex but fixed data structures (e.g., an object with defined fields).Map
: Suitable when flexibility is needed, such as handling JSON data.
Optimized Performance:
Record
: Due to static typing,Record
is more optimized for performance.Map
: Less optimized because of its flexibility and dynamic nature.