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

패키지 상세v0.4.0

language_pickers

Flutter에서 언어 선택기들을 자동으로 생성해 줍니다. 다양한 방식으로 자유롭게 사용할 수 있습니다.

30일 다운로드
62
좋아요
16
Pub 점수
160

패키지 설치

flutter pub add language_pickers

패키지 개요

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

Language Pickers는 언어 선택기 생성을 간소화하는 Flutter 패키지입니다. 국제화를 최소한의 노력으로 구현할 수 있도록 사전에 구성된 사용자 정의 가능한 위젯을 제공합니다. 유연하고 쉽게 통합할 수 있도록 설계되어 개발자가 다양한 UI 컨텍스트에서 언어 선택 기능을 빠르게 구현할 수 있습니다. 여러 언어를 지원하며 양식, 설정 화면 또는 언어 선택이 필요한 모든 인터페이스에서 사용할 수 있습니다. 이 패키지는 오픈소스이며 개인 및 상용 프로젝트에서 자유롭게 사용할 수 있습니다.

사용 사례

  • 앱 로컬라이제이션 설정
  • 사용자 언어 선호도 선택
  • 설정 화면 언어 선택기
  • 다국어 폼 입력
  • 국제화된 앱 인터페이스

주요 기능

  • 사전 구축된 언어 선택 위젯
  • 사용자 정의 가능한 UI 컴포넌트
  • Flutter와의 간편한 통합
  • 국제화를 지원합니다
  • 오픈소스이며 무료로 사용 가능

적합한 대상

  • 다국어 앱을 개발하는 개발자
  • 언어 선택 도구가 필요한 UI 디자이너
  • 빠른 i18n 구현이 필요한 프로젝트
  • Flutter 초보자가 피커 탐색 중
  • 글로벌 대상 사용자를 위한 앱

고려 사항

  • 언어 전환 로직을 수동으로 처리해야 합니다
  • 내장된 번역 지원 없음
  • UI 선택에 국한되며 언어 데이터 관리는 아님
  • 완전한 i18n을 위해 추가 패키지가 필요할 수 있습니다
  • 플랫폼별 동작이 명시적으로 문서화되지 않았음

원본 README

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

language_pickers

It's package for Dart and Flutter.

It makes language select pickers for you in Flutter. You can use it freely in lots of ways.

And specially thanks to Figen Güngör(@figengungor), who is opened the source code of 'country_pickers'. Lots of source codes are from country_pickers GitHub Repository, so works are very easy. Thanks again.

Upgrading from 0.3.x

0.4.0 does not break your code. The old API still works, it only warns you. Here is what to move to:

0.3.x 0.4.0
defaultLanguagesList (List<Map<String, String>>) Languages.defaultLanguages (List<Language>)
languagesList: myMaps languages: myLanguages
LanguagePickerUtils.getLanguageByIsoCode('ko') Language.fromIsoCode('ko')
— Languages.korean, Languages.english, …

One behaviour changed: an unknown ISO code now throws an ArgumentError instead of an Exception. ArgumentError is an Error, so on Exception catch no longer catches it.

Every Language also has a nativeName now, and Language implements == and hashCode, so you can put it in a Set or use it as a Map key.

Getting Started

LanguagePickerDropdown example
import 'package:language_pickers/language_pickers.dart';

Language _selectedDropdownLanguage = Language.fromIsoCode('ko');

// It's sample code of Dropdown Item.
// nativeName is the name written in the language itself, e.g. '한국어'.
Widget _buildDropdownItem(Language language) {
  return Row(
    children: <Widget>[
      SizedBox(
        width: 8.0,
      ),
      Text("${language.name} (${language.nativeName})"),
    ],
  );
}


// Builder
LanguagePickerDropdown(
                    initialValue: 'ko',
                    itemBuilder: _buildDropdownItem,
                    onValuePicked: (Language language) {
                      _selectedDropdownLanguage = language;
                      print(_selectedDropdownLanguage.name);
                      print(_selectedDropdownLanguage.isoCode);
                    },
                  ),
Narrowing the languages down
LanguagePickerDropdown(
  languages: const <Language>[
    Languages.korean,
    Languages.english,
    Languages.japanese,
  ],
),
LanguagePickerDropdownController example

The controller lets you read and change the selection from outside the picker.

final controller =
    LanguagePickerDropdownController(initialValue: Languages.korean);

@override
void dispose() {
  controller.dispose();
  super.dispose();
}

// Builder
LanguagePickerDropdown(controller: controller),

// Somewhere else
controller.selectIsoCode('ja');   // the dropdown follows
print(controller.value.name);     // reads the current selection
LanguagePickerDialog example
import 'package:language_pickers/language_pickers.dart';

Language _selectedDialogLanguage =
      Language.fromIsoCode('ko');

// It's sample code of Dialog Item.
Widget _buildDialogItem(Language language) => Row(
    children: <Widget>[
      Text(language.name),
      SizedBox(width: 8.0),
      Flexible(child: Text("(${language.isoCode})"))
    ],
  );

void _openLanguagePickerDialog() => showDialog(
    context: context,
    builder: (context) => Theme(
        data: Theme.of(context).copyWith(primaryColor: Colors.pink),
        child: LanguagePickerDialog(
            titlePadding: EdgeInsets.all(8.0),
            searchCursorColor: Colors.pinkAccent,
            searchInputDecoration: InputDecoration(hintText: 'Search...'),
            isSearchable: true,
            title: Text('Select your language'),
            onValuePicked: (Language language) => setState(() {
                  _selectedDialogLanguage = language;
                  print(_selectedDialogLanguage.name);
                  print(_selectedDialogLanguage.isoCode);
                }),
            itemBuilder: _buildDialogItem)),
  );
LanguagePickerCupertino example
import 'package:language_pickers/language_pickers.dart';

Language _selectedCupertinoLanguage = Language.fromIsoCode('ko');

// It's sample code of Cupertino Item.
void _openCupertinoLanguagePicker() => showCupertinoModalPopup<void>(
  context: context,
  builder: (BuildContext context) {
    return LanguagePickerCupertino(
      pickerSheetHeight: 200.0,
      onValuePicked: (Language language) => setState(() {
            _selectedCupertinoLanguage = language;
            print(_selectedCupertinoLanguage.name);
            print(_selectedCupertinoLanguage.isoCode);
          }),
    );
  });

Widget _buildCupertinoItem(Language language) => Row(
    children: <Widget>[
      Text("+${language.name}"),
      SizedBox(width: 8.0),
      Flexible(child: Text(language.name))
    ],
  );

Information

If a name or a native name is wrong, please make some issues on GitHub.

The names and the native names are based on the public ISO 639-1 code table. Where the table lists several native writings for one language, this package keeps one representative writing, so that it fits in a dropdown.

Credits

Developed by gomgom(GitHub @gomgom).

카테고리

소스 저장소

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

아직 데이터가 없습니다.