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

duration_picker 표지
패키지 상세v2.0.0

duration_picker

분과 시간을 모두 선택할 수 있는 시간 선택 위젯입니다. flutter_duration_picker에서 포크되었습니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
1만
좋아요
126
Pub 점수
160

패키지 설치

flutter pub add duration_picker

패키지 개요

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

flutter_duration_picker에서 파생된 시간과 분을 사용하여 기간을 선택할 수 있는 Flutter 위젯입니다. 사용자가 시간 간격을 선택할 수 있도록 깔끔하고 직관적인 인터페이스를 제공하며, 타이머, 작업 소요 시간 또는 약속 길이와 같은 설정에 적합합니다. 이 선택기에서는 모바일, 웹, 데스크톱을 포함한 모든 주요 플랫폼을 지원합니다. 단순성과 일관성을 고려해 설계되었으며, 복잡한 설정 없이도 기간 입력이 필요한 앱에 원활하게 통합될 수 있습니다.

사용 사례

  • 타이머 지속 시간 설정
  • 작업 길이 선호 설정
  • 예약 길이 스케줄링
  • 운동 세션 시간 입력
  • 재생 시간 맞춤 설정
  • 지연 간격 정의

주요 기능

  • 시간과 분 선택
  • 크로스 플랫폼 호환성
  • 간단한 통합
  • 클린한 UI 디자인
  • 업데이트 유지한 포크
  • 모든 플러터 플랫폼을 지원합니다

적합한 대상

  • 시간 간격 선택이 필요한 앱
  • 생산성 또는 피트니스 애플리케이션
  • 캘린더 또는 스케줄링 도구
  • 타이머 또는 알림 기능
  • 가벼운 기간 선택기를 찾는 개발자

고려 사항

  • 시간과 분만 가능
  • 초 지원 없음
  • 지속 시간 값에 대한 수동 처리가 필요합니다
  • 매우 긴 기간에는 적합하지 않습니다
  • 분기된 저장소의 안정성에 의존합니다
  • 내장된 검증 없음

원본 README

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

Duration Picker for flutter

Fork from flutter_duration_picker. https://github.com/cdharris/flutter_duration_picker

A little widget for picking durations. Heavily inspired from the Material Design time picker widget.

How to setup localization

In order to support other languages, developers need to configure localization settings like the settings for the time picker. Example for english and korean:

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Duration Picker Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      localizationsDelegates: [
        DurationPickerLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: [Locale('en'), Locale('ko')],
      home: const MyHomePage(title: 'Duration Picker Demo'),
    );
  }
}

How to add more languages

  1. Add a localizations class in localizataions dir.
class DurationPickerLocalizationsKo extends DurationPickerLocalizations {
  @override
  String get baseUnitHour => '시간';

  @override
  String get baseUnitMillisecond => '밀리초';

  ...
}

The class should extend DurationPickerLocalizations. This makes it easy to write everything you should write.

  1. Add the language code to the supportedLocales array in _DurationPickerLocalizationDelegate.
class _DurationPickerLocalizationDelegate
    extends LocalizationsDelegate<DurationPickerLocalizations> {
  const _DurationPickerLocalizationDelegate();

  static const supportedLocales = ['en', 'ko'];

  ...

}
  1. Return a DurationPickerLocalizations implementation as locale at load method in _DurationPickerLocalizationDelegate.
@override
  Future<DurationPickerLocalizations> load(Locale locale) async {
    switch (locale.languageCode) {
      case 'ko':
        return DurationPickerLocalizationsKo();
      default:
        return DurationPickerLocalizationsEn();
    }
  }

Example Usage:

dependencies:
  duration_picker: "^1.0.0"
import 'package:flutter/material.dart';
import 'package:duration_picker/duration_picker.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Duration Picker Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Duration Picker Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  Duration _duration = Duration(hours: 0, minutes: 0);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Expanded(
                child: DurationPicker(
              duration: _duration,
              onChange: (val) {
                setState(() => _duration = val);
              },
            ))
          ],
        ),
      ),
      floatingActionButton: Builder(
          builder: (BuildContext context) => FloatingActionButton(
                onPressed: () async {
                  var resultingDuration = await showDurationPicker(
                    context: context,
                    initialTime: Duration(minutes: 30),
                  );
                  ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                      content: Text('Chose duration: $resultingDuration')));
                },
                tooltip: 'Popup Duration Picker',
                child: Icon(Icons.add),
              )),
    );
  }
}

카테고리

소스 저장소

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