没有互联网连接时如何显示小吃店?

时间:2019-08-09 09:50:43

标签: user-interface flutter dart

我第一次尝试构建移动应用程序。如果没有互联网连接,如何显示Snackbar?

这是用于抖动的apss,具有连接性:^ 0.4.3 + 1包

这是我的连接状态

class NetworkSensitive extends StatelessWidget {
  final Widget child;


  NetworkSensitive({
    this.child,
  });

  @override
  Widget build(BuildContext context) {
    var connectionStatus = Provider.of<ConnectivityStatus>(context);

    if (connectionStatus == ConnectivityStatus.WiFi) {
      return child;
    }

    if (connectionStatus == ConnectivityStatus.Cellular) {
      return Container(child: Text('Koneksi Mobile'), );
    }

    if (connectionStatus == ConnectivityStatus.Offline) {
      return Container(child: Text('Koneksi Offline'), );
    }
  }
}

这是我展示小吃店的家

import 'package:flutter/material.dart';


class HomeView extends StatefulWidget {
  static const int CounterMargins = 60;

  @override
  _HomeViewState createState() => _HomeViewState();
}

class _HomeViewState extends State<HomeView> {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
        backgroundColor: backgroundColor,
        body: Column(children: [
         NetworkSensitive(child: _buildSimpleSnackBar(),

  }

   _buildSimpleSnackBar() {
    return Container(
      padding: EdgeInsets.all(8.0),
      child: MaterialButton(
        onPressed: () {
          final snackBar = SnackBar(
            content: Text("your'e Offline"),
          );
          _scaffoldKey.currentState.showSnackBar(snackBar);
        },
        color: Colors.blue,
        child: Text(
          "Show Simple SnackBar",
          style: TextStyle(color: Colors.white),
        ),
      ),
    );
  }
}

该代码用于在按下按钮后检查连接并显示小吃栏,但是如何在不按下按钮的情况下显示它

2 个答案:

答案 0 :(得分:0)

它们是连接状态更改的侦听器,如软件包页面https://pub.dev/packages/connectivity所示。


class MyClass extends StatefulWidget {

  @override
  _MyClassState createState() => _MyClassState();
}

class _MyClassState extends State<MyClass> {

  var connectionStatus;

  @override
    initState() {
    super.initState();

    subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
      // Got a new connectivity status!
      setState(() => connectionStatus = result);
    })
  }

  @override
  Widget build(BuildContext context) {

    if (connectionStatus == ConnectivityStatus.WiFi) {
      return child;
    }

    if (connectionStatus == ConnectivityStatus.Cellular) {
      return Container(child: Text('Koneksi Mobile'), );
    }

    if (connectionStatus == ConnectivityStatus.Offline) {
      return Container(child: Text('Koneksi Offline'), );
    }
  }

  // Be sure to cancel subscription after you are done
  @override
  dispose() {
    super.dispose();
    subscription.cancel();
  }

答案 1 :(得分:0)

有一个listener用于更改连接状态,如软件包页面所示。​​

对于吐司消息,我使用的是FlutterToast软件包:

import requests
from bs4 import BeautifulSoup
import re

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0'
}


def main(url):
    r = requests.get(url, headers=headers)
    soup = BeautifulSoup(r.content, 'html.parser')
    target = soup.find("div", {'data-pair-id': True}).get('data-pair-id')
    match = re.search(r'smlID = (.*?);', r.text).group(1)
    print(target)
    print(match)


main("https://www.investing.com/indices/nasdaq-composite")

连接软件包还提供了移动网络和wifi网络的更改。只需使用14958 2035293 import 'package:connectivity/connectivity.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; class HomeView extends StatefulWidget { @override _HomeViewState createState() => _HomeViewState(); } class _HomeViewState extends State<HomeView> { var subscription; var connectionStatus; @override void initState() { subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) { setState(() => connectionStatus = result ); }); checkInternetConnectivity(); checkLoginStatus(); super.initState(); } checkInternetConnectivity() { if (connectionStatus == ConnectivityResult.none) { return Fluttertoast.showToast( msg: "Check your internet connection", toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.TOP, timeInSecForIosWeb: 1, backgroundColor: Colors.red, textColor: Colors.white, fontSize: 16.0 ); } } @override dispose() { super.dispose(); subscription.cancel(); } @override Widget build(BuildContext context) { return Container(); } }