-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
providers.dart
47 lines (37 loc) · 1.43 KB
/
providers.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
// 🐦 Flutter imports:
import 'package:flutter/material.dart';
// 📦 Package imports:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:rxdart/rxdart.dart';
// 🌎 Project imports:
import 'package:YouOweMe/resources/providers.dart';
import 'package:YouOweMe/ui/IntroFlow/loginUser.dart';
const int pages = 5;
final introFlowPageControllerProvider =
Provider((ref) => PageController(initialPage: 0));
final authValidatorProvider = StreamProvider<bool>((ref) {
BehaviorSubject<bool> screeningSubject = BehaviorSubject.seeded(false);
PageController _pageController = ref.read(introFlowPageControllerProvider);
_pageController.addListener(() {
if (_pageController.hasClients && _pageController.page == pages) {
screeningSubject.add(true);
}
});
//TODO This should be watch and that is causing breaks in
//in the intro flow and thats not right!
//try aagain with newer version of riverpod.
ref.watch(firebaseUserProvider).whenData((user) {
// print("User is $user and PageC is ${_pageController.page}");
if (user != null &&
_pageController.hasClients &&
_pageController.page == 0) {
screeningSubject.add(true);
} else {
screeningSubject.add(false);
}
});
ref.onDispose(() => screeningSubject.close());
return screeningSubject.stream;
});
final introFlowUserProvider = Provider((ref) => LoginUser());