Flutter: могу ли я сделать будущий метод потребителем класса ChangeNotifierProvider? - PullRequest
0 голосов
/ 11 июля 2020

После сохранения имени пользователя в базе данных 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 потребителем? Есть ли способ сделать ему доступными методы класса провайдера? Или я ошибаюсь? Вот дерево виджетов:

Диаграмма дерева виджетов

...