mirror of
https://github.com/simon-ding/polaris.git
synced 2026-05-28 21:47:56 +08:00
feat: change logout button
This commit is contained in:
@@ -50,18 +50,41 @@ class MyApp extends StatelessWidget {
|
|||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () => context.go(SystemSettingsPage.route),
|
onPressed: () => context.go(SystemSettingsPage.route),
|
||||||
icon: const Icon(Icons.settings)),
|
icon: const Icon(Icons.settings)),
|
||||||
APIs.isLoggedIn
|
FutureBuilder(
|
||||||
? IconButton(
|
future: APIs.isLoggedIn(),
|
||||||
onPressed: () async {
|
builder: (context, snapshot) {
|
||||||
final SharedPreferences prefs =
|
if (snapshot.hasData && snapshot.data == true) {
|
||||||
await SharedPreferences.getInstance();
|
return MenuAnchor(
|
||||||
await prefs.remove('token');
|
menuChildren: [
|
||||||
if (context.mounted) {
|
MenuItemButton(
|
||||||
context.go(LoginScreen.route);
|
leadingIcon: const Icon(Icons.exit_to_app),
|
||||||
}
|
child: const Text("登出"),
|
||||||
},
|
onPressed: () async {
|
||||||
icon: const Icon(Icons.exit_to_app))
|
final SharedPreferences prefs =
|
||||||
: Container()
|
await SharedPreferences.getInstance();
|
||||||
|
await prefs.remove('token');
|
||||||
|
if (context.mounted) {
|
||||||
|
context.go(LoginScreen.route);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
builder: (context, controller, child) {
|
||||||
|
return TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
if (controller.isOpen) {
|
||||||
|
controller.close();
|
||||||
|
} else {
|
||||||
|
controller.open();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: const Icon(Icons.account_circle),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return Container();
|
||||||
|
})
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
body: Center(
|
body: Center(
|
||||||
@@ -73,7 +96,11 @@ class MyApp extends StatelessWidget {
|
|||||||
child: NavDrawer(),
|
child: NavDrawer(),
|
||||||
),
|
),
|
||||||
const VerticalDivider(thickness: 1, width: 1),
|
const VerticalDivider(thickness: 1, width: 1),
|
||||||
Flexible(flex: 7, child: Padding(padding: const EdgeInsets.all(20),child: child), )
|
Flexible(
|
||||||
|
flex: 7,
|
||||||
|
child:
|
||||||
|
Padding(padding: const EdgeInsets.all(20), child: child),
|
||||||
|
)
|
||||||
]))),
|
]))),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -44,22 +44,29 @@ class APIs {
|
|||||||
|
|
||||||
static Dio? gDio;
|
static Dio? gDio;
|
||||||
static Map<String, String> authHeaders = {};
|
static Map<String, String> authHeaders = {};
|
||||||
static bool isLoggedIn = false;
|
|
||||||
|
|
||||||
static Future<Dio> getDio() async {
|
static Future<bool> isLoggedIn() async {
|
||||||
if (gDio != null) {
|
return isNotBlank(await getToken());
|
||||||
return gDio!;
|
}
|
||||||
}
|
|
||||||
|
static Future<String> getToken() async {
|
||||||
var token = authHeaders["Authorization"];
|
var token = authHeaders["Authorization"];
|
||||||
if (isBlank(token)) {
|
if (isBlank(token)) {
|
||||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||||
var t = prefs.getString("token");
|
var t = prefs.getString("token");
|
||||||
if (isNotBlank(t)) {
|
if (isNotBlank(t)) {
|
||||||
authHeaders["Authorization"] = t!;
|
authHeaders["Authorization"] = t!;
|
||||||
isLoggedIn = true;
|
|
||||||
token = t;
|
token = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return token ?? "";
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<Dio> getDio() async {
|
||||||
|
if (gDio != null) {
|
||||||
|
return gDio!;
|
||||||
|
}
|
||||||
|
var token = await getToken();
|
||||||
|
|
||||||
var dio = Dio();
|
var dio = Dio();
|
||||||
dio.interceptors.add(InterceptorsWrapper(
|
dio.interceptors.add(InterceptorsWrapper(
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:dio/dio.dart';
|
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
|
||||||
import 'package:ui/providers/APIs.dart';
|
import 'package:ui/providers/APIs.dart';
|
||||||
import 'package:ui/providers/server_response.dart';
|
import 'package:ui/providers/server_response.dart';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user