Skip to content

Commit 8f3199f

Browse files
authored
migrate (#1)
1 parent c08667d commit 8f3199f

19 files changed

+223
-218
lines changed

lib/app.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'pages/home/home_bloc.dart';
66
import 'pages/home/home_page.dart';
77

88
class MyApp extends StatelessWidget {
9-
const MyApp({Key key}) : super(key: key);
9+
const MyApp({Key? key}) : super(key: key);
1010

1111
@override
1212
Widget build(BuildContext context) {

lib/data/contact_repository_impl.dart

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import 'package:built_collection/built_collection.dart';
2+
import 'package:collection/collection.dart';
3+
14
import '../domain/contact.dart';
25
import '../domain/contact_repository.dart';
36
import 'local/dao/contact_dao.dart';
@@ -9,39 +12,36 @@ class ContactRepositoryImpl implements ContactRepository {
912
const ContactRepositoryImpl(this._contactDao);
1013

1114
@override
12-
Stream<List<Contact>> search({String query = ''}) {
13-
return _contactDao.search(query).map((entities) {
14-
return entities.map(_toContact).toList(growable: false);
15-
});
15+
Stream<BuiltList<Contact>> search({required String by}) {
16+
return _contactDao.search(by).map(
17+
(entities) => entities.map(_toContact).whereNotNull().toBuiltList());
1618
}
1719

1820
@override
19-
Stream<Contact> getContactById(int id) {
20-
return _contactDao.findById(id).map(_toContact);
21-
}
21+
Stream<Contact?> getContactById(int id) =>
22+
_contactDao.findById(id).map(_toContact);
2223

2324
@override
24-
Future<bool> delete(Contact contact) {
25-
return _contactDao.deleteById(contact.id);
26-
}
25+
Future<bool> delete(Contact contact) => _contactDao
26+
.deleteById(ArgumentError.checkNotNull(contact.id, 'Contact id'));
2727

2828
@override
29-
Future<bool> insert(Contact contact) {
30-
return _contactDao.insert(_toEntity(contact));
31-
}
29+
Future<bool> insert(Contact contact) =>
30+
_contactDao.insert(_toEntity(contact));
3231

3332
@override
34-
Future<bool> update(Contact contact) {
35-
return _contactDao.update(_toEntity(contact));
36-
}
33+
Future<bool> update(Contact contact) =>
34+
_contactDao.update(_toEntity(contact));
3735

3836
@override
39-
Future<void> deleteAll() {
40-
return _contactDao.deleteAll();
41-
}
37+
Future<void> deleteAll() => _contactDao.deleteAll();
4238
}
4339

44-
Contact _toContact(ContactEntity entity) {
40+
Contact? _toContact(ContactEntity? entity) {
41+
if (entity == null) {
42+
return null;
43+
}
44+
4545
return Contact(
4646
(b) => b
4747
..id = entity.id

lib/data/local/dao/contact_dao.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import 'contact_entity.dart';
33
abstract class ContactDao {
44
Stream<List<ContactEntity>> search(String query);
55

6-
Stream<ContactEntity> findById(int id);
6+
Stream<ContactEntity?> findById(int id);
77

88
Future<bool> deleteById(int id);
99

lib/data/local/dao/contact_dao_impl.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class ContactDaoImpl implements ContactDao {
3131
}
3232

3333
@override
34-
Stream<ContactEntity> findById(int id) {
34+
Stream<ContactEntity?> findById(int id) {
3535
return Stream.fromFuture(_briteDatabaseFuture).flatMap((db) {
3636
return db
3737
.createQuery(

lib/data/local/dao/contact_entity.dart

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
1-
import 'package:meta/meta.dart';
21

32
import 'contact_entry.dart';
43

54
class ContactEntity {
6-
final int id;
5+
final int? id;
76
final String name;
87
final String phone;
98
final String address;
109
final bool male;
1110
final DateTime updatedAt;
12-
final DateTime createdAt;
11+
final DateTime? createdAt;
1312

1413
const ContactEntity({
15-
@required this.id,
16-
@required this.name,
17-
@required this.phone,
18-
@required this.address,
19-
@required this.male,
20-
@required this.updatedAt,
21-
@required this.createdAt,
14+
required this.id,
15+
required this.name,
16+
required this.phone,
17+
required this.address,
18+
required this.male,
19+
required this.updatedAt,
20+
required this.createdAt,
2221
});
2322

2423
factory ContactEntity.fromJson(Map<String, dynamic> json) {

lib/domain/contact.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import 'package:built_value/built_value.dart';
44
part 'contact.g.dart';
55

66
abstract class Contact implements Built<Contact, ContactBuilder> {
7-
@nullable
8-
int get id;
7+
int? get id;
98

109
String get name;
1110

@@ -17,8 +16,7 @@ abstract class Contact implements Built<Contact, ContactBuilder> {
1716

1817
DateTime get updatedAt;
1918

20-
@nullable
21-
DateTime get createdAt;
19+
DateTime? get createdAt;
2220

2321
Contact._();
2422

lib/domain/contact.g.dart

Lines changed: 31 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/domain/contact_repository.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
import 'package:built_collection/built_collection.dart';
2+
13
import 'contact.dart';
24

35
abstract class ContactRepository {
4-
Stream<List<Contact>> search({String query = ''});
6+
Stream<BuiltList<Contact>> search({required String by});
57

6-
Stream<Contact> getContactById(int id);
8+
Stream<Contact?> getContactById(int id);
79

810
Future<bool> delete(Contact contact);
911

lib/pages/detail/detail_bloc.dart

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,18 @@ import '../../domain/contact.dart';
77
import '../../domain/contact_repository.dart';
88

99
class DetailBloc extends DisposeCallbackBaseBloc {
10-
final DistinctValueStream<Contact> contact$;
10+
final DistinctValueStream<Contact?> contact$;
1111

12-
DetailBloc._(
13-
this.contact$,
14-
Func0<void> dispose,
15-
) : super(dispose);
12+
DetailBloc._(this.contact$, VoidAction dispose) : super(dispose);
1613

1714
factory DetailBloc(
1815
final ContactRepository contactRepo,
1916
final Contact initial,
2017
) {
21-
assert(contactRepo != null, 'contactRepo cannot be null');
22-
assert(initial != null, 'initial cannot be null');
18+
final id = ArgumentError.checkNotNull(initial.id, 'Contact id');
2319

2420
final contact$ =
25-
contactRepo.getContactById(initial.id).publishValueDistinct(initial);
21+
contactRepo.getContactById(id).publishValueDistinct(initial);
2622

2723
final bag = DisposeBag([
2824
contact$.debug(identifier: '[DETAIL_BLOC] contact').collect(),

lib/pages/detail/detail_page.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import '../edit_or_add/edit_or_add_page.dart';
1010
import 'detail_bloc.dart';
1111

1212
class DetailPage extends StatefulWidget {
13-
const DetailPage({Key key}) : super(key: key);
13+
const DetailPage({Key? key}) : super(key: key);
1414

1515
@override
1616
_DetailPageState createState() => _DetailPageState();
@@ -19,8 +19,8 @@ class DetailPage extends StatefulWidget {
1919
class _DetailPageState extends State<DetailPage> {
2020
final _dateFormat = DateFormat.yMd().add_Hms();
2121
final scrollController = ScrollController();
22-
double _scale;
23-
double _top;
22+
var _scale = 0.0;
23+
var _top = 0.0;
2424

2525
void calculateScaleAndTop() {
2626
final defaultTopMargin = 256.0 - 23.0;
@@ -66,7 +66,7 @@ class _DetailPageState extends State<DetailPage> {
6666
final height = MediaQuery.of(context).size.height;
6767

6868
return Scaffold(
69-
body: RxStreamBuilder<Contact>(
69+
body: RxStreamBuilder<Contact?>(
7070
stream: bloc.contact$,
7171
builder: (context, contact) {
7272
return Stack(
@@ -180,7 +180,7 @@ class _DetailPageState extends State<DetailPage> {
180180
leading: Icon(Icons.create),
181181
title: Text('Created at: '),
182182
subtitle: Text(
183-
_dateFormat.format(contact.createdAt),
183+
_dateFormat.format(contact.createdAt!),
184184
),
185185
),
186186
ListTile(

0 commit comments

Comments
 (0)