Тип аргумента «void Function(ConnectivityResult)» нельзя назначить типу параметра «void Function(List<ConnectivityResult>)?»

Тип аргумента «void Function(ConnectivityResult)» нельзя назначить типу параметра «void Function(List<ConnectivityResult>)?». как я могу это решить?

Ошибка указывает на то, что метод _updateConnectionStatus рассматривается так, как будто он возвращает List<ConnectivityResult>, что неверно. Метод _updateConnectionStatus возвращает ConnectivityResul, указывающий текущий статус подключения.

Кажется, в сигнатуре метода _updateConnectionStatus есть недоразумение.

late StreamSubscription subscription;
  StreamSubscription<ConnectivityResult>? connectivitySubscription;
  StreamSubscription? internetSubscription;
  bool hasInternet = false;

  @override
  void initState(){
    super.initState();
    subscription = Connectivity().onConnectivityChanged.listen(_updateConnectionStatus);
    internetSubscription = InternetConnectionChecker().onStatusChange.listen((status) { 
      final hasInternet = status == InternetConnectionStatus.connected;
      setState(() => this.hasInternet = hasInternet);
    });
  }

  @override
  void dispose() {
    // Cancel the connectivity subscription when the controller is closed
    connectivitySubscription?.cancel();
    super.dispose();
  }

  void _updateConnectionStatus (ConnectivityResult result) {
    final hasInternet = result != ConnectivityResult.none;
    final message = hasInternet
        ? result == ConnectivityResult.mobile
            ? 'You are connected to mopile network'
            : 'You are connected to mopile network'
        : 'You have no internet';

    // Only check for the none case, which indicates no connectivity
    if (!hasInternet) {
      Get.rawSnackbar(
          messageText: Text('PLEASE CONNECT TO THE INTERNET $message',
              style: const TextStyle(color: Colors.white, fontSize: 14)),
          isDismissible: false,
          duration: const Duration(days: 1),
          backgroundColor: Colors.red[400]!,
          icon: const Icon(
            Icons.wifi_off,
            color: Colors.white,
            size: 35,
          ),
          snackStyle: SnackStyle.GROUNDED);
    } else {
      if (Get.isSnackbarOpen) {
        Get.closeCurrentSnackbar();
      }
    }
  }

Где checkConnectivity в вашем коде?

Dhafin Rayhan 13.04.2024 17:18

@DhafinRayhan, потому что я изо всех сил старался найти решение, я несколько раз менял код. Теперь я отредактировал описание, чтобы оно соответствовало прикрепленному коду.

jo4s3ph shaman 13.04.2024 17:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
432
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сообщение об ошибке верное. Вы передаете свой метод _updateConnectionStatus, который принимает ConnectivityResult в качестве параметра, в обратный вызов listenonConnectivityChanged, который представляет собой поток List<ConnectivityResult>.

В предыдущих версиях пакета connection_plus поток onConnectivityChanged излучал ConnectivityResult, в котором ему можно было передать ваш метод. Однако обновление 6.0.x внесло некоторые критические изменения, одно из них заключается в том, что поток onConnectivityChanged теперь вместо этого излучает List<ConnectivityResult>.

Вы можете либо понизить версию пакета Connection_plus до 5.x.x, либо адаптировать свой метод _updateConnectionStatus, чтобы он принимал List<ConnectivityResult> в качестве параметра.

Другие вопросы по теме