import 'dart:convert'; import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:flutter_habit/common/LocalData.dart'; import 'package:flutter_habit/pages/home_page.dart'; class UserProvider extends ChangeNotifier { String? token; int? uid; String? email; String? userName; String? gender; String? birthday; Uint8List? photo; int? coins; void init() { load(); debugPrint("""init AccountProvider to: token = $token uid = $uid email = $email userName = $userName gender = $gender birthday = $birthday photo = ${photo != null ? "notNull" : "null"} coins = $coins"""); } void store() { LocalData.getInstance()!.setString("token", token!); LocalData.getInstance()!.setInt("uid", uid!); LocalData.getInstance()!.setString("email", email!); LocalData.getInstance()!.setString("userName", userName!); LocalData.getInstance()!.setString("gender", gender!); LocalData.getInstance()!.setString("birthday", birthday!); LocalData.getInstance()!.setString( "photo", photo == null ? null : Base64Encoder().convert(photo!)); LocalData.getInstance()!.setInt("coins", coins!); } void load() { token = LocalData.getInstance()!.getString("token"); uid = LocalData.getInstance()!.getInt("uid"); email = LocalData.getInstance()!.getString("email"); userName = LocalData.getInstance()!.getString("userName"); gender = LocalData.getInstance()!.getString("gender"); birthday = LocalData.getInstance()!.getString("birthday"); String? listString = LocalData.getInstance()!.getString("photo"); if (listString == null) { photo = null; } else { photo = Base64Decoder().convert(listString); } coins = LocalData.getInstance()!.getInt("coins"); } Future cleanDataAndBackToHome(BuildContext context) async { token = null; uid = null; // email = null; userName = null; gender = null; birthday = null; photo = null; coins = null; store(); await Navigator.of(context).pushAndRemoveUntil( MaterialPageRoute(builder: (context) => HomePage()), (route) => route == null, ); refresh(); } void refresh() { store(); notifyListeners(); } }