Check value in array exists Flutter dart

In the world of programming, particularly with mobile app development using Flutter and Dart, there are numerous ways to check if a specific value exists within an array or list. This blog post aims at providing insights into some common methods used to achieve this, along with practical examples and code snippets.

The contains Method

For basic lists containing simple data types like integers, strings, etc., the most straightforward method is using the `contains` method provided by Dart’s list class. This method returns a boolean value indicating whether the specified element exists within the list or not.

// Example of using contains with a String
List list = ['apple', 'banana'];
bool containsApple = list.contains('apple');
print(containsApple); // Output: true

// Example with an Int
List numbers = [1, 2, 3];
bool hasThree = numbers.contains(3);
print(hasThree); // Output: true

The Contains Method for Complex Data Types

However, when dealing with complex data types like objects within a list, the approach changes. The `contains` method alone is insufficient to check if an object exists in the list because it directly checks if the exact instance of that object exists, not its properties or values.

// Example of trying to use contains with a custom class
class DownloadedFile {
  String Url;
  String location;
}

List listOfDownloadedFiles = [];
listOfDownloadedFiles.add(new DownloadedFile(Url: 'url1', location: 'loc1'));
bool hasSameUrl = listOfDownloadedFiles.contains(new DownloadedFile(Url: 'url1', location: 'loc1'));

// This will not work as expected because it's looking for the exact same instance of DownloadedFile
print(hasSameUrl); // Output: false (most likely)

Where Clause with Equality Check

To check if a specific value or object exists within a list when dealing with complex data types, you can use the `where` method provided by Dart’s iterable class. This approach involves filtering the elements based on a condition specified as a callback function.

// Checking for an item in a List of DownloadedFile
List listOfDownloadedFiles = [];
listOfDownloadedFiles.add(new DownloadedFile(Url: 'url1', location: 'loc1'));
var hasSameUrl = listOfDownloadedFiles.where((element) => element.Url == 'url1').toList();
bool valueExists = hasSameUrl.isNotEmpty;
print(valueExists); // Output: true if 'url1' is in the list

Conclusion

In conclusion, checking for a specific value within an array or list in Flutter and Dart development involves understanding when to use the `contains` method for basic data types and employing the `where` clause with equality checks for complex data types like objects. This blog post aimed at providing practical examples and insights into these methods to help developers better navigate their projects.

There might be other approaches or even more efficient ways to achieve this, especially in scenarios involving large datasets or performance-critical code paths.