Flutter 로그인 종료 기능 고려 사항
사용자가 로그인 인터페이스를 통해 앱에 로그인한 후에 되돌아오는 키를 눌러도 로그인 인터페이스로 돌아갈 수 없도록 하기 위해서, 우리는 사용자가 로그인한 후에 새로운 루트 창고를 만들어야 한다
직접 코드, 프로그램 입구:
void main() {
DataUtils.getUserInfo().then((userInfo) {
runApp(MyApp(userInfo));
});
}
class MyApp extends StatelessWidget {
MyApp(this.userModel);
final UserModel userModel;
@override
Widget build(BuildContext context) {
GlobalKey _formKey = new GlobalKey();
return MaterialApp(
title: 'MaterialManagement',
theme: ThemeData(accentColor: Colors.white, primaryColor: Colors.blue),
home: userModel == null
? LoginPage()
: HomePage(),
routes: <String, WidgetBuilder>{
'/login': (BuildContext context) => LoginPage(),
'/home': (BuildContext context) => HomePage()
},
);
}
}
현재 우리는
loginButton
의 onPressed
이벤트의 리셋 함수_loginWithAvatarAndPassword
를 정의하여 루트 창고를 다시 만드는 작업을 완성해야 한다. 그러면 로그인에 성공한 후에 리턴 키를 누르면 로그인 인터페이스로 돌아가는 문제를 피할 수 있다(로그아웃 동일).Future<dynamic> _loginWithAvatarAndPassword() async {
final form = _formKey.currentState;
if (form.validate()) {
_formKey.currentState.save();
LoginUtils.login(user.avatar, user.password, (isAlive, userInfo) {
if (isAlive) {
runApp(MyApp(userInfo)); // look here!
}
});
}
}
더블 클릭으로 응용 프로그램 종료 실현
WillPopScope
사용자가 루트에 대한 조작을 사용자 정의할 수 있도록 리셋onWillPop
을 등록합니다.우리의 리셋 함수를 사용자 정의하고,
Future<bool> _doubleExit() {
int nowTime = new DateTime.now().microsecondsSinceEpoch;
if (_lastClickTime != 0 && nowTime - _lastClickTime > 1500) {
return new Future.value(true);
} else {
_lastClickTime = new DateTime.now().microsecondsSinceEpoch;
new Future.delayed(const Duration(milliseconds: 1500), () {
_lastClickTime = 0;
});
return new Future.value(false);
}
}
미리 만들어진 하위 노드
_getBody()
를 WillPopScope
에 끼워넣기Widget build(BuildContext context) {
return WillPopScope(
onWillPop: _doubleExit, // look here!
child: _getBody(),
);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.