패키지, 저장소 및 앱 카테고리 검색

패키지 상세v1.0.0+18-dev.1

flutter_no_internet_widget

추가 코드나 종속성 없이 온라인 또는 오프라인 위젯을 표시할 수 있는 새로운 Flutter 위젯입니다.

AndroidiOSmacOSWindowsLinux
30일 다운로드
4
좋아요
51
Pub 점수
150

패키지 설치

flutter pub add flutter_no_internet_widget

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

기기의 연결이 끊어졌을 때 자동으로 사용자 정의 UI를 표시하고, 연결이 복원되면 온라인 뷰로 부드럽게 전환하는 가벼운 Flutter 위젯입니다. 추가 종속성이나 보일러플레이트 코드가 필요 없으며, 어떤 Flutter 앱에도 쉽게 통합할 수 있습니다. 이 위젯은 실시간으로 네트워크 상태를 모니터링하며, 복잡한 로직 없이도 깔끔하고 선언적인 방식으로 오프라인 상태를 처리할 수 있도록 제공합니다. 연결 상태 변경에 즉각적인 피드백이 필요한 앱에 적합합니다.

사용 사례

  • 앱에서 오프라인 자리표시자 표시
  • 연결 손실 중 사용자 피드백 제공
  • 동적 온라인/오프라인 뷰를 통한 UX 향상
  • 네트워크 상태 관리 간소화
  • 신뢰할 수 없는 네트워크를 위한 회복력 있는 UI 구축

주요 기능

  • 자동 네트워크 상태 감지
  • 추가 종속성 없이 최소 설정
  • 사용자 정의 가능한 온라인 및 오프라인 위젯
  • 실시간 연결 모니터링
  • 보일러플레이트 코드가 필요하지 않습니다

적합한 대상

  • 기본적인 오프라인 지원이 필요한 간단한 앱
  • 빠른 네트워크 상태 솔루션을 찾는 개발자
  • 연결 상태 변화에 대응하기 위한 반응형 UI가 필요한 앱
  • 개발 일정이 긴 프로젝트
  • 복잡한 네트워크 처리를 피하는 팀

고려 사항

  • 기본적인 온라인/오프라인 감지에 제한됨
  • 특정 네트워크 유형(예: Wi-Fi 대 모바일)을 처리하지 않습니다
  • 실패한 요청에 대한 내장된 재시도 메커니즘이 없습니다
  • 고급 네트워크 진단에 적합하지 않습니다
  • 플랫폼 수준의 연결성 API에 의존합니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

flutter_no_internet_widget

flutter_no_internet_widget codecov

Overview

A new Flutter widget shows online or offline screens without extra code or dependencies.

We need a lot of boilerplate code to check every project's network connectivity. Why can't there be a single package that takes care of everything and make the developer's life easy?

I also had the same question and have created this simple widget to help myself and others.

Use case

The package's primary purpose is to show a default offline screen and a mandatory online screen provided while initializing.

Declare this widget at the top of the widget tree once. Whenever there is no internet, the default offline screen or the provided screen will be displayed.

Example

InternetWidget(
 online: Text('Online'),
 offline: Text('offline),
 );

Full Example

import 'package:flutter/material.dart';
import 'package:flutter_no_internet_widget/flutter_no_internet_widget.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return InternetWidget(
      offline: const FullScreenWidget(),
      // ignore: avoid_print
      whenOffline: () => print('No Internet'),
      // ignore: avoid_print
      whenOnline: () => print('Connected to internet'),
      loadingWidget: const Center(child: Text('Loading')),
      online: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: const MyHomePage(title: 'Flutter Demo Home Page'),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              const Text(
                'You have pushed the button this many times:',
              ),
              Text(
                '$_counter',
                style: Theme.of(context).textTheme.headline4,
              ),
              ElevatedButton(
                onPressed: () {
                  Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (context) => const SecondScreen(),
                    ),
                  );
                },
                child: const Text('Navigate'),
              )
            ],
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: _incrementCounter,
          tooltip: 'Increment',
          child: const Icon(Icons.add),
        ),
      ),
    );
  }
}

Video

ezgif-3-b21b127bea

Use this package as a library

Run this command:

With Dart:

 dart pub add flutter_no_internet_widget

With Flutter:

 flutter pub add flutter_no_internet_widget

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  flutter_no_internet_widget: [use_latest]

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it Now in your Dart code, you can use:

import 'package:flutter_no_internet_widget/flutter_no_internet_widget.dart';

Maintainers

카테고리

의존성

의존성 목록 5 개

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.