Ошибка: Поле «_connectionChangeStream» должно быть инициализировано, поскольку его тип » StreamSubscription» не допускает значение null

#flutter

#трепетать

Вопрос:

 import 'dart:async';  import 'package:flutter/material.dart'; import 'package:nartaqi/no_connection_page.dart'; import 'package:nartaqi/notifications.dart';  import 'body.dart'; import 'connectionStatusSingleton.dart'; import 'constants.dart';  class HomePage extends StatefulWidget {  const HomePage({  Key? key,  }) : super(key: key);   @override  _HomePageState createState() =gt; _HomePageState(); } class _HomePageState extends Statelt;HomePagegt; {  bool isOffline = false;   StreamSubscription _connectionChangeStream;   @override  initState() {  super.initState();  ConnectionStatusSingleton connectionStatus = ConnectionStatusSingleton.getInstance();  _connectionChangeStream = connectionStatus.connectionChange.listen(connectionChanged);  }   void connectionChanged(dynamic hasConnection) {  setState(() {  isOffline = !hasConnection;  });  }  @override  Widget build(BuildContext context) {   return Scaffold(  appBar: AppBar(  backgroundColor: kPrimaryColor,  elevation: 0.0,  leading: IconButton(  onPressed: () {  Navigator.push(  context,  MaterialPageRoute(  builder: (context) =gt; const NotificationPage(),),);  },  icon: const Icon(  Icons.notifications,  color: Color(0xFFF9A826),  ),  ),  actions: const [  Padding(  padding:  EdgeInsets.symmetric(horizontal: 10.0, vertical: 16.0),  child: Text(  'الرئيسية',  style: kHomeScreenTextStyle,  ),  ),  ],  ),  body: isOffline? NoConnectionPage():Body(),  );  }  

я получаю ошибку, когда инициализирую с опозданием строку(StreamSubscription _connectionChangeStream;), также _connectionChangeStream становится серым, значение нигде не используется, я на самом деле пытаюсь подключить свое приложение к Интернету и проверить, есть ли подключение к Интернету или нет, по-видимому, пакет подключения сообщает вам только о том, подключены ли вы к сети, он не проверяет наличие доступа в Интернет

Ответ №1:

Чтобы устранить эту ошибку initialize , вам нужно либо выполнить ее _connectionChangeStream , либо сделать это nullable , как показано ниже

 StreamSubscription? _connectionChangeStream;  

Комментарии:

1. знаете ли вы способ проверить наличие доступа в Интернет в приложении flutter, вы видите, что я хочу, чтобы мое тело зависело от статуса подключения либо было body: Body (), когда в сети, либо body: NoConnectionPage(), когда в автономном режиме.

2. Я думаю, что вы уже используете пакет подключения для этого

3. да, но он не проверяет доступ к данным, только если вы подключены к Wi-Fi или мобильному телефону, он действует так, как будто он в Сети, даже если нет доступа в Интернет