#flutter #dart
#flutter #dart
Вопрос:
Мне нужно сохранить значение в переменной или какой-либо службе, чтобы я мог использовать значение на нескольких страницах. Локальное хранилище — не очень хорошая идея, поэтому мне нужно сохранить его у какого-нибудь поставщика услуг или чего-то подобного, может кто-нибудь, пожалуйста, помочь, как я могу создать сервис, сохранить значение и перенести его на другие страницы.
Это мой код
Future<http.Response> _trySubmit() async {
final isValid = _formKey.currentState.validate();
FocusScope.of(context).unfocus();
if (isValid) {
_formKey.currentState.save();
print(_userEmail.trim());
print(_userPassword.trim());
var map = new Map<String, dynamic>();
map['grant_type'] = 'password';
map['username'] = _userEmail.trim();
map['password'] = _userPassword.trim();
http.Response res = await http.post(
'http://sublimeapi.netcodesolution.com/token',
headers: <String, String>{
'Content-Type': 'application/x-www-form-urlencoded',
},
body: map,
);
var data = res.body;
print(data);
}
}
Значение для печати выглядит примерно так
I/flutter ( 5147):{"access_token":"FwYttAQIDDSRpuFFUgzznmMYgMNNfiW4OvQ4","token_type":"bearer","expires_in":86399}
Мне нужно сохранить access_token в некотором провайдере или переменной, чтобы использовать его на нескольких страницах Спасибо
Ответ №1:
Если у вас ограниченное количество значений для сохранения, вы можете использовать общие настройки. https://pub.dev/packages/shared_preferences
Однако я бы не рекомендовал вам использовать, если количество используемых вами данных продолжает увеличиваться.
Ответ №2:
Вы могли бы использовать синглтон.
class Singleton {
String _myVariable;
Singleton._privateConstructor();
static final Singleton _instance = Singleton._privateConstructor();
factory Singleton() {
return _instance;
}
set myVariable(value) => _myVariable = value;
get myVariable => _myVariable;
}
Создайте экземпляр Singleton в начале приложения, в методе main().
Информация о синглтоне будет доступна только при запуске приложения, поэтому вам следует найти способ сохранения данных (localStorage или с сервера), а затем инициализировать синглтон этими данными при каждом сеансе.
Я рекомендую вам взглянуть на get_it или решение для управления состоянием.
Ответ №3:
Поскольку ваш проект становится большим, вам нужно больше переменных и функций во всем вашем приложении, я бы рекомендовал Provider
https://pub.dev/packages/provider как управление состоянием вашего приложения. просто добавьте это в pubspec.yaml:
dependencies:
provider: ^4.3.2
и запустите
$ flutter pub get
и импортировать
import 'package:provider/provider.dart';