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

pager 표지
패키지 상세v0.0.6

pager

예를 들어 사용자 지정 페이징 테이블을 만들고 싶을 때 유용한 숫자 기반 페이지네이션을 구축할 수 있는 위젯입니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
494
좋아요
26
Pub 점수
160

패키지 설치

flutter pub add pager

패키지 개요

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

Pager는 사용자 정의 가능한 숫자 기반 페이지네이션 인터페이스를 만들기 위해 설계된 Flutter 위젯으로, 커스텀 테이블과 같은 페이지 기반 표시를 구현하는 데 이상적입니다. 직관적인 컨트롤과 다양한 스타일링 옵션을 지원하며, 깔끔하고 재사용 가능한 방식으로 페이지 간 이동을 가능하게 합니다. 단순성과 유연성을 고려해 제작되었으며, 여러 플랫폼을 대상으로 한 앱에 원활하게 통합됩니다.

사용 사례

  • 사용자 정의 페이지 테이블 구현
  • 목록에서 대규모 데이터셋 탐색하기
  • 사용자 친화적인 페이지 탐색 구축
  • 반응형 데이터 그리드 만들기
  • 고립된 페이지를 사용하여 무한 스크롤 구현
  • 데이터 집약적 애플리케이션에서 UX 향상

주요 기능

  • 숫자 페이지 표시기
  • 사용자 정의 가능한 페이지 범위 표시
  • 앞으로 및 뒤로 탐색 지원
  • ListView 또는 DataTable과의 간편한 통합
  • 테마 또는 속성을 통한 사용자 정의 스타일링
  • 크로스 플랫폼 호환성

적합한 대상

  • 데이터 집약적인 UI를 구축하는 개발자
  • 경량 페이지네이션을 필요로 하는 팀
  • 사용자 정의 테이블 페이지네이션을 필요로 하는 앱
  • 다중 플랫폼을 대상으로 하는 Flutter 프로젝트
  • 페이지네이션의 외관을 제어하고 싶은 UI 디자이너

고려 사항

  • 데이터 로딩을 자동으로 처리하지 않습니다
  • 페이지 변경에 대한 수동 상태 관리가 필요합니다
  • 숫자 기반의 페이지네이션에 국한됨(무한 스크롤 없음)
  • 매우 큰 페이지 수에 최적화되지 않음
  • 접근성 기능에 대한 내장 지원 없음

원본 README

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

Pager

Numeric pagination suitable for multiple cases, such as, custom paged table.

Getting started

You should ensure that you add the pager as a dependency in your flutter project.

dependencies:
 pager: ^0.0.6

Example Project

There is a example project in the example folder. Check it out. Otherwise, keep reading to get up and running.

Usage

Need to include the import the package to the dart file where it will be used, use the below command,

import 'package:pager/pager.dart';

Pager

Basic Widget


new Pager(
            currentPage: _currentPage,
            totalPages: 5,
            onPageChanged: (page) {},
          ),

Example 1

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Pagination Example"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Container(
              height: 200,
              margin: const EdgeInsets.all(32),
              color: Colors.blue,
              child: Center(
                child: Text(
                  "PAGE: $_currentPage",
                  style: const TextStyle(color: Colors.white, fontSize: 20),
                ),
              ),
            ),
            Pager(
              currentPage: _currentPage,
              totalPages: 5,
              onPageChanged: (page) {
                setState(() {
                  _currentPage = page;
                });
              },
            ),
          ],
        ),
      ),
    );
  }
}

Complete example 2

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

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Pagination Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({
    Key? key,
  }) : super(key: key);

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

class _MyHomePageState extends State<MyHomePage> {
  late int _currentPage;
  late int _itemsPerPage;
  List<int> pages = [5, 10, 18, 50, 100];
  late int _totalPages;
  final int _totalElements = 100;
  @override
  void initState() {
    super.initState();
    _currentPage = 1;
    _itemsPerPage = pages.first;
    _totalPages = (_totalElements / _itemsPerPage) as int;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Pagination Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Pagination Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(32.0),
          child: Center(
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                Container(
                  height: 180,
                  width: 400,
                  color: Colors.blue,
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.spaceAround,
                    children: [
                      Text(
                        "TOTAL ELEMENT: $_totalElements",
                        style:
                            const TextStyle(color: Colors.white, fontSize: 18),
                      ),
                      Text(
                        "PAGE: $_currentPage",
                        style:
                            const TextStyle(color: Colors.white, fontSize: 18),
                      ),
                      Text(
                        "ITEMS PER PAGE: $_itemsPerPage",
                        style:
                            const TextStyle(color: Colors.white, fontSize: 18),
                      ),
                      Text(
                        "TOTAL PAGES: $_totalPages",
                        style:
                            const TextStyle(color: Colors.white, fontSize: 18),
                      ),
                    ],
                  ),
                ),
                const SizedBox(height: 32),
                Pager(
                  currentItemsPerPage: _itemsPerPage,
                  currentPage: _currentPage,
                  totalPages: _totalPages,
                  onPageChanged: (page) {
                    setState(() {
                      _currentPage = page;
                    });
                  },
                  showItemsPerPage: true,
                  onItemsPerPageChanged: (itemsPerPage) {
                    setState(() {
                      _itemsPerPage = itemsPerPage;
                      _totalPages = (_totalElements / _itemsPerPage).ceil();
                      _currentPage = 1;
                    });
                  },
                  itemsPerPageList: pages,
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

카테고리

소스 저장소

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

아직 데이터가 없습니다.