Edu DaLatHub
  • Trang chủ
  • Flutter
  • WordPress Plugin
  • GoLang
  • ReactJS
  • NodeJS
  • Networking
    • Basic Networking
      • ARP
      • ICMP
      • TCP/UDP
    • Routing & Switching
      • RIP
      • OSPF
      • EIGRP
      • Redistribution
      • TSHOOT
      • WAN
Liên hệ

Tháng Hai 28, 2020

  • By  tinhphan
  • 1 comment

Flutter Xử lý LOGIN và LOGOUT như thế nào cho LIKE A BOSS ?

Chào các bạn. Lại là mình đây! Bài viết hôm nay mình viết theo phong cách khác với các bài viết trước. Các bạn thích phong cách viết nào hơn? Comment cho mình biết với nhé!

Các ứng dụng hiện nay hầu hết đều có phần xử lý login hoặc logout. Sau khi login xong thì xử lí logic app theo flow định sẵn thì không có gì để bàn cả. Nhưng khi logout các bạn phải quay trở lại màn hình login và clear toàn bộ các page trong stack củng như là các dữ liệu đã lưu trước đó. Mục tiêu là restart lại ứng dụng của các bạn làm cho nó trông như là mới được khởi động là không lưu lại gì cả.

Khi làm project có liên quan tới chức năng nói trên, mình đã tìm ra được một cách để làm. Trong bài viết này, mình sẽ không giải thích nhiều chỉ tập trung vào giới thiệu giải pháp cho các bạn. Các bạn có thể comment chỗ các bạn không hiểu nhé.

Let’s go!

Thông thường, chúng ta hay dùng

để không phải quay lại màn hình đó nữa. Nhưng các task vẫn còn đó và sẽ xảy ra một số vấn đề như hiển thị nút back và lỗi flow đã định.

Có nhiều cách giải quyết khác nhau cho vấn đề này. Nhưng mình mạo muội xin phép giới thiệu với các bạn widget RestartApp.

import 'package:flutter/material.dart';
class RestarApp extends StatefulWidget {
  RestarApp({this.child});
  final Widget child;
  static void restartApp(BuildContext context) {
    context.findAncestorStateOfType<_RestarAppState>().restartApp();
  }
  @override
  _RestarAppState createState() => _RestarAppState();
}
class _RestarAppState extends State<RestarApp> {
  Key key = UniqueKey();
  void restartApp() {
    setState(() {
      key = UniqueKey();
    });
  }
  @override
  Widget build(BuildContext context) {
    return KeyedSubtree(
      key: key,
      child: widget.child,
    );
  }
}

Sau khi tạo xong widget, các bạn cần wrap nó với MyApp trong main.dart

Trong event xử lý logout các bạn gọi

Sau lệnh này, ứng dụng của các bạn sẽ tự động restart và vào lại màn hình đầu tiên để tiếp tục vào login.

Kết luận

Các bạn hãy comment về kết quả áp dụng cho mình biết với nhé!

Tags:
Flutter

One Comment

#10. Flutter: Login one time! - CodePSoft

Tháng Hai 28, 2020

[…] đều chỉ đăng nhập một lần cho tới khi nào thực hiện logout. Ở bài số #5 Xử lý LOGIN và LOGOUT như thế nào cho LIKE A BOSS ? và bài số #6: Xử lí Dark Mode real-time, mình có đề cập tới vấn đề này. Và […]

Reply

Leave a Comment Cancel Reply

Your email address will not be published.*

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

Don’t compare yourself with anyone in this world…if you do so, you are insulting yourself.

Bill Gates

When something is important enough, you do it even if the odds are not in your favor.

Elon Musk

Bài viết mới

  • Lorem Ipsum Sample Content123
  • Lorem Ipsum Sample Content
  • Hello world
  • Hello world
  • Hello world
  • Wide area networks (Phần 2)
  • Wide area networks (Phần 1)
  • Redistribution (Phần Cuối)
  • Redistribution (Phần 1)
  • OSPF – Open Shortest Path First (Phần Cuối)

Nơi chia sẻ về tin công nghệ, các kinh nghiệm lập trình. Xây dựng các khoá đào tạo lập trình, mạng, tin học văn phòng...

Thông tin liên hệ

  • 2/9 Phạm Ngũ Lão, Phường 3, Đà Lạt
  • 0865802659
  • info@dalathub.com

Copyright @ 2022 Edu DaLatHub