После сохранения имени пользователя в базе данных mysql / php с использованием будущего метода под названием «postSocialData», я хотел бы затем сохранить это имя пользователя в общих настройках и сделать его доступным для поставщика. У меня есть ChangeNotifierProvider, обертывающий мое материальное приложение. Я создал класс провайдера под названием «UserProvider» с методом под названием «setCurrentName», который сохранит имя в общем файле настроек и вызовет слушателей. Но я не могу получить доступ к методу «setCurrentName» из «postSocialData». Как мне сделать postSocialData потребителем UserProvider?
Вот мой класс провайдера;
class UserProvider with ChangeNotifier{
String _currentname;
UserProvider(){
_currentname='Anonymous';
loadPreferences();
}
String get currentname => _currentname;
void setCurrentName(String currentname){
_currentname = currentname;
notifyListeners();
savePreferences();
}
savePreferences() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('currentname', _currentname);
}
loadPreferences() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String currentname = prefs.getString('currentname');
}
}
И вот что я хотел бы сделать в моем будущем методе;
Future<void> postSocialData(String name) async {
final url = "http://example.com/postsocial.php?currentname=$name";
final response = await http.get(url);
if (response.statusCode == 200) {
setCurrentName(
currentname: name,
);
}
}
Как мне сделать метод postSocialData потребителем? Есть ли способ сделать ему доступными методы класса провайдера? Или я ошибаюсь? Вот дерево виджетов:
Диаграмма дерева виджетов