본문 바로가기

Flutter/12 Clone 'Used Goods app'

[Flutter] Clone - 당근마켓9(logout)

지난번에 auth page 에서 인증 성공후 Home Screen 으로 이동하는 기능을 추가했습니다.

이번에는 반대로 Home Screen 에서 로그아웃하면 다시 auth page 로 이동하는 기능을 구현하겠습니다.

(실제 사용자관리는 차후 예정).

개발환경 : 윈도우11, 안드로이드 스튜디오, flutter 3.0.1

 

 

 

화면 흐름은 아래와 같다.

 

 

 

지난번 인증 받고 로그인할때 화면 이동시 Get.toNamed('/') 을 사용하여 Home Screen 화면에 리턴 버튼이 생겼다.

그래서 이번에는 Get.offAllNamed('/'); 로 변경하였다.

 

 

./src/screens/home_screen.dart

 

class HomeScreen extends StatelessWidget {
  const HomeScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    debugPrint(">>> build from HomeScreen");
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        title: const Text('Home Screen'),
        actions: [
          IconButton(
            onPressed: () {
              // 로그아웃하면 '/auth' 로 이동
              UserController.to.setUserAuth(false);
            },
            icon: const Icon(Icons.logout),
          ),
        ],
      ),
      body: const Center(
        child: Text('Home Screen'),
      ),
    );
  }
}

 

 

./src/states/user_state.dart - Get.offAllNamed('/') 를 auth_page 에서 여기로 이동

 

class UserController extends GetxController {
  static UserController get to => Get.find();

  final RxBool _userLoggedIn = false.obs;

  RxBool get userState => _userLoggedIn;

  void setUserAuth(bool authState) {
    _userLoggedIn(authState);
    // auth_page 에서 여기로 이동
    Get.offAllNamed('/');
  }
}