import 'package:colorize_logger/colorize_logger.dart'; import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; import 'package:ustest/Services/Profile.dart'; import 'package:ustest/Services/UserService.dart'; class MyView extends StatelessWidget { const MyView(); @override Widget build(BuildContext context) { print("build Myview"); GlobalKey myViewKey = GlobalKey(); return Scaffold( body: Center( child: FutureBuilder( key: myViewKey, future: loadUserData(), builder: (context, snapshot) { if (snapshot.hasError) { return const Center( child: Text('An error has occurred!'), ); } else if (snapshot.hasData) { var user = snapshot.data!; if (UserService.DefaultNotLoginId == user.id) { return Column( children: [ CircleAvatar( backgroundColor: Colors.greenAccent[400], radius: 40, child: Text( 'GeeksForGeeks', style: TextStyle(fontSize: 25, color: Colors.white), ), //Text ), TextButton( child: const Text("Sign in"), onPressed: () => _showSignInScreen(context)) ], ); } else { return Column( children: [ Row( children: [ CircleAvatar( backgroundColor: Colors.greenAccent[400], radius: 40, child: Text( 'GeeksForGeeks', style: TextStyle(fontSize: 25, color: Colors.white), ), //Text ), Column( children: [Text(user.userName)], ) ], ), Row( children: [ Text('Name:${user.userName}, Token:${user.accessToken}'), TextButton.icon( onPressed: () => onLogout(context), icon: Icon(Icons.logout), label: Text("注銷")) ], ) ], ); } } else { return const Center( child: CircularProgressIndicator(), ); } }, )), ); } Future loadUserData() async { try { var service = GetIt.instance.get(); var profile = await service.getCurrentUser(); return profile; } catch (ex) { Logger.warning('loadUserData ex:$ex'); return null; } } void _showSignInScreen(BuildContext context) { Future.delayed(Duration.zero, () { Navigator.of(context).pushNamed('/signin'); }); } void onLogout(context) { var service = GetIt.instance.get(); service.logout(); Navigator.of(context).pushNamed('/signin'); } }