safe_extensions
A Flutter package that simplifies working with nullable types by offering default values and replacements when null is encountered. With safe_extensions, you can safely access nullable values and avoid repetitive null checks.
Currently Supported Features
- Handle nullable types such as
bool,int,double,String,DateTime,Iterable,Map, andSet. - Use
safeValuegetter for defaults andsafe()method to specify replacements. - No platform-specific setup required; works across all Flutter-supported platforms.
Platform Availability
| API | Android | iOS | Linux | macOS | Windows | Web |
|---|---|---|---|---|---|---|
| safeValue | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| safe() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Documentation
For full details, check the API reference on pub.dev.
Default Values by Type
Here's a summary of the default values provided by safeValue for each nullable type:
| Type | Default Value |
|---|---|
bool |
false |
int |
0 |
double |
0.0 |
String |
"" (empty string) |
DateTime |
DateTime(1970, 1, 1) |
List |
[] (empty list) |
Iterable |
[] (empty iterable) |
Map |
{} (empty map) |
Set |
{} (empty set) |
Usage
Safe Bool
Using safeValue and safe() for bool:
bool? nullableBool;
bool resultSafeValue = nullableBool.safeValue; // Returns false if nullableBool is null
bool resultSafeMethod = nullableBool.safe(true); // Returns true if nullableBool is null
Safe Int
Using safeValue and safe() for int:
int? nullableInt;
int resultSafeValue = nullableInt.safeValue; // Returns 0 if nullableInt is null
int resultSafeMethod = nullableInt.safe(100); // Returns 100 if nullableInt is null
Safe Double
Using safeValue and safe() for double:
double? nullableDouble;
double resultSafeValue = nullableDouble.safeValue; // Returns 0.0 if nullableDouble is null
double resultSafeMethod = nullableDouble.safe(5.5); // Returns 5.5 if nullableDouble is null
Safe String
Using safeValue and safe() for String:
String? nullableString;
String resultSafeValue = nullableString.safeValue; // Returns an empty string if nullableString is null
String resultSafeMethod = nullableString.safe("default"); // Returns "default" if nullableString is null
Safe DateTime
Using safeValue and safe() for DateTime:
DateTime? nullableDateTime;
DateTime resultSafeValue = nullableDateTime.safeValue; // Returns DateTime(1970, 1, 1) if nullableDateTime is null
DateTime resultSafeMethod = nullableDateTime.safe(DateTime.now()); // Returns current date if nullableDateTime is null
Safe List
Using safeValue and safe() for List:
List<String>? nullableList;
List<String> resultSafeValue = nullableList.safeValue; // Returns empty list if nullableList is null
List<String> resultSafeMethod = nullableList.safe(['1', '2', '3']); // Returns ['1', '2', '3'] if nullableList is null
Safe Iterable
Using safeValue and safe() for Iterable:
Iterable<int>? nullableIterable;
Iterable<int> resultSafeValue = nullableIterable.safeValue; // Returns empty iterable if nullableList is null
Iterable<int> resultSafeMethod = nullableIterable.safe([1, 2, 3]); // Returns [1, 2, 3] if nullableList is null
Safe Map
Using safeValue and safe() for Map:
Map<String, int>? nullableMap;
Map<String, int> resultSafeValue = nullableMap.safeValue; // Returns empty map if nullableMap is null
Map<String, int> resultSafeMethod = nullableMap.safe({"key": 1}); // Returns {"key": 1} if nullableMap is null
Safe Set
Using safeValue and safe() for Set:
Set<int>? nullableSet;
Set<int> resultSafeValue = nullableSet.safeValue; // Returns empty set if nullableSet is null
Set<int> resultSafeMethod = nullableSet.safe({5, 10}); // Returns {5, 10} if nullableSet is null
Getting Started
To start using safe_extensions, add it as a dependency in your pubspec.yaml:
dependencies:
safe_extensions: ^1.1.0
Then, import it into your Dart file:
import 'package:safe_extensions/safe_extensions.dart';
For more help getting started with Flutter, view the online documentation. For plugin code, refer to the documentation.
Issues & Contributions
If you encounter any issues or have feature requests, please check GitHub Issues or submit a new issue. Contributions are welcome!