/
item_controller.dart
47 lines (34 loc) · 1.06 KB
/
item_controller.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:mobx/mobx.dart';
import '../../shared/models/item.dart';
import 'repository/item_repository.dart';
part 'item_controller.g.dart';
@Injectable()
class ItemController = _ItemControllerBase with _$ItemController;
abstract class _ItemControllerBase with Store {
final ItemRepository _repository;
int _id;
InAppWebViewController webViewController;
_ItemControllerBase(this._repository);
@observable
ObservableFuture<Item> itemFuture;
@observable
bool isViewingComment = false;
@observable
bool isLoadingWebContent = false;
bool get hasWebContent => Uri.parse(itemFuture.value.url).isAbsolute;
@action
void switchView() {
isViewingComment = !isViewingComment;
}
@action
Future loadItem(String id) {
_id = int.parse(id);
return itemFuture = ObservableFuture(_repository.fetchItem(_id));
}
@action
Future reloadItem() {
return itemFuture = ObservableFuture(_repository.fetchItem(_id));
}
}