質問するログイン新規登録

質問編集履歴

1

コードの追加

2020/08/11 11:05

投稿

AAA_AAA
AAA_AAA

スコア3

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,9 @@
4
4
  - 初回ログイン時のみ、ログインページに遷移しログインを行う
5
5
  - ログアウトしない限り、アプリを終了した後にアプリを開いてもログインページに遷移しない
6
6
 
7
- 自分なりにいくつか調べ、それらを試したのですがくいきませんでした。
7
+ 自分なりにいくつか調べ、それらを試したのですがそもそもログインページに遷移しませんでした。
8
+ 試したコードは以下mainコードです。
9
+
8
10
  具体的な方法としてどのように行うことで以上の機能を実装することができるのでしょうか?
9
11
  また、現在FirebaseのEmailとPasswordを利用した機能を実装しているのですが、GoogleログインやFacebookログインの場合でも以上の機能を実装する際には共通の方法なのでしょうか?
10
12
 
@@ -27,24 +29,77 @@
27
29
  - FirebaseAuth
28
30
  - FirebaseCloudStore
29
31
 
30
- ```pubspec
32
+ ```main
33
+ class MyApp extends StatelessWidget {
34
+ // This widget is the root of your application.
31
35
 
32
- environment:
33
- sdk: ">=2.7.0 <3.0.0"
36
+ final UserState user = UserState();
34
37
 
35
- dependencies:
38
+ @override
39
+ Widget build(BuildContext context) {
40
+ return ChangeNotifierProvider<UserState>.value(
36
- flutter:
41
+ value: user,
42
+ child: MaterialApp(
43
+ //デバックラベル非表示
44
+ debugShowCheckedModeBanner: false,
45
+ title: 'Flutter Demo',
37
- sdk: flutter
46
+ theme: ThemeData(
47
+ primarySwatch: Colors.blue,
48
+ visualDensity: VisualDensity.adaptivePlatformDensity,
49
+ ),
50
+ home: LoginPage(),
51
+ initialRoute: "/",
52
+ routes:<String, WidgetBuilder>{
53
+ // "/": (BuildContext context) => LoginPage(),
54
+ AddRecord.routeName: (BuildContext context) => AddRecord(),
55
+ "/login":(BuildContext context) => LoginPage(),
56
+ "/home":(BuildContext context) => PageManager()
57
+ },
58
+ )
59
+ );
60
+ }
61
+ }
38
62
 
39
- cupertino_icons: ^0.1.3
40
- firebase_auth: ^0.16.1
41
- cloud_firestore: ^0.13.7
63
+ class LoginCheck extends StatefulWidget{
42
- provider: ^4.3.1
64
+ LoginCheck({Key key}) : super(key: key);
43
65
 
66
+ @override
67
+ _LoginCheckState createState() => _LoginCheckState();
44
68
 
69
+ }
45
70
 
46
- dev_dependencies:
71
+ class _LoginCheckState extends State<LoginCheck>{
47
- flutter_test:
48
- sdk: flutter
49
72
 
73
+ @override
74
+ void initState(){
75
+ super.initState();
76
+ checkUser();
77
+
78
+ // TODO: implement initState
79
+
80
+
81
+ }
82
+ void checkUser() async{
83
+ final UserState userState = Provider.of<UserState>(context);
84
+ final currentUser = await FirebaseAuth.instance.currentUser();
85
+ print(currentUser);
86
+ if(currentUser == null){
87
+ Navigator.pushReplacementNamed(context,"/login");
88
+ }else{
89
+ userState.setUser(currentUser);
90
+ Navigator.pushReplacementNamed(context, "/home");
91
+ }
92
+ }
93
+ @override
94
+ Widget build(BuildContext context) {
95
+ // TODO: implement build
96
+ return Scaffold(
97
+ body: Center(
98
+ child: Container(
99
+ child: Text("Loading..."),
100
+ ),
101
+ ),
102
+ );
103
+ }
104
+ }
50
105
  ```