v0.1.5
clean_settings
具有合理預設值的設定 UI 產生器。消除樣板程式碼的需求,並提供豐富且高度主觀的小部件。
62喜歡 34近 30 天下載40Pub 分數
平台暫無資料
具有合理預設值的設定 UI 產生器
{"sdk":"flutter"}{"sdk":"flutter"}^1.9.2以下為英文專案原文快照,最新內容請造訪 GitHub。
Settings UI generator with sane defaults.
Creating a settings screen requires the same boiler plate code over and over. Settings also need a rich set of widgets to cover all possible cases. This library aims to provide sane defaults while creating a setting screen.
Checkbox Widget
SettingCheckboxItem(
title: 'Smart Reply',
value: smartReply,
onChanged: (v) => setState(() => smartReply = v),
description: 'Show suggested replies when available'),
Switch Widget
SettingSwitchItem(
title: 'Smart Compose',
value: smartCompose,
onChanged: (v) => setState(() => smartCompose = v),
description: 'Show predictive writing suggestions',
priority: ItemPriority.high,
),
Radio Picker
SettingRadioItem<String>(
title: 'Theme',
displayValue: '$theme theme',
selectedValue: theme,
items: [
SettingRadioValue('Light', 'Light'),
SettingRadioValue('Dark', 'Dark'),
SettingRadioValue('System Default', 'System Default'),
],
onChanged: (v) => setState(() => theme = v),
),
Text Input
SettingTextItem(
title: 'Auto Reply Message',
displayValue: autoReplyMessage,
initialValue: autoReplyMessage,
hintText: 'Sent by system on away',
onChanged: (v) => setState(() => autoReplyMessage = v),
),
Date Time Picker
SettingDateTimeItem<DateTime>(
title: 'Next Scheduled Email At',
displayValue: scheduledEmailSlug,
onChanged: (v) => setState(() => scheduledEmailDateTime = v),
),
Date Picker
SettingDateTimeItem<DateTime>(
title: 'Date of birth',
displayValue: dateOfBirthSlug,
onChanged: (v) => setState(() => dateOfBirth = v),
timePicker: false,
),
Time Picker
SettingDateTimeItem<TimeOfDay>(
title: 'Daily wake up email',
displayValue: dailyEmailAt.format(context),
onChanged: (v) => setState(() => dailyEmailAt = v),
datePicker: false,
),
Wheel Number
SettingWheelPickerItem(
title: 'Days of mail to sync',
displayValue: daysOfMailToSync.toString(),
initialValueIndex: daysOfMailToSync,
items: List.generate(10, (index) => index.toString()),
onChanged: (v) => setState(() => daysOfMailToSync = v),
),
Wheel Text
var replyOptions = ['Reply', 'Reply All', 'Last Chosen', 'None'];
SettingWheelPickerItem(
title: 'Default reply action',
displayValue: replyOptions[chosenReplyOptionIndex],
initialValueIndex: chosenReplyOptionIndex,
items: replyOptions,
onChanged: (v) => setState(() => chosenReplyOptionIndex = v),
),
Confirm Dialog
SettingConfirmItem(
title: 'Delete account',
displayValue: 'Permanently deletes your account',
alertTitle: 'Delete your account',
alertMessage: 'Are you sure?',
priority: ItemPriority.high,
onConfirm: () => {},
onCancel: () => {},
),
Custom Handler
SettingItem(
title: 'Simple Counter',
displayValue: counter.toString(),
onTap: () => setState(() => counter++),
),
Root - SettingContainer
\
\_ SettingSection
\
\_ SettingItem (or Variants)
prioritySet the priority of the item to one of:
ItemPriority.high - Shows red colorItemPriority.normal - Default colorItemPriority.low - Shows in green colorItemPriority.disabled - Disables the itemCreates a simple Checkbox setting item
SettingContainer(
sections: [
SettingSection(
title: 'Appearance',
items: [
SettingCheckboxItem(
title: 'Smart Reply',
value: smartReply,
onChanged: (v) => setState(() => smartReply = v),
description: 'Show suggested replies when available'),
],
),
],
)