35
loading...
This website collects cookies to deliver better user experience
flutter create freezed_demo
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
freezed_annotation: ^0.14.2
dev_dependencies:
flutter_test:
sdk: flutter
build_runner: ^2.0.5
freezed: ^0.14.2
flutter pub get
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user.freezed.dart';
@freezed
class User with _$User {
const User._();
factory User({
required String name,
required String email,
@Default(true) bool isActive,
}) = _User;
}
flutter pub run build_runner build
//In case of dart only
pub run build_runner build otherwise
var person = Person(name: 'Khadga', email: '[email protected]');
print(person.name); // Khadga
print(person.email); // [email protected]
print(person.isActive)//true
var newPerson=person.copyWith(name:'Sakar Subedi');
print(newPerson.name);//Sakar Subedi
print(person.email); // [email protected]
print(person.isActive)//true
import 'package:explore_freezed/user.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'result.freezed.dart';
@freezed
class Result with _$Result {
const Result._();
factory Result.initial() = _Initial;
factory Result.success(User user) = _Success;
factory Result.loading() = _Loading;
factory Result.error([String? err]) = _Error;
}
_currentState.when(
initial: () {
// return some widgets
},
success: (user) {
// return some widgets
},
loading: () {
// return some widgets
},
error: (err) {
// return some widgets
},
),
dev_dependencies:
flutter_test:
sdk: flutter
build_runner: ^2.0.5
freezed: ^0.14.2
json_serializable: ^4.1.3
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user.freezed.dart';
part 'user.g.dart';
@freezed
class User with _$User {
const User._();
factory User({
required String name,
required String email,
@Default(true) bool isActive,
}) = _User;
factory User.fromJson(Map<String, dynamic> map) => _$UserFromJson(map);
}
var _decoded = {'name': 'Khadga Shrestha', 'email': '[email protected]'};
var _user = User.fromJson(_decoded);