Arna Framework - A unique set of widgets for building applications with Flutter.
This Framework is in active development. Any contribution, idea, criticism or feedback is welcomed.
- Arna
- Content
- Getting Started
- Usage
- Arna App
- Arna Scaffold
- Arna Side Scaffold
- Arna Master Detail Scaffold
- Arna Button
- Arna Icon Button
- Arna Text Button
- Arna Linked Buttons
- Arna Popup Menu Button
- Arna Segmented Control
- Arna CheckBox
- Arna CheckBox List Tile
- Arna Radio
- Arna Radio List Tile
- Arna Switch
- Arna Switch List Tile
- Arna List
- Arna Expansion Panel
- Arna Card
- Arna Badge
- Arna Dividers
- Arna Separators
- Arna PopupDialog
- Arna Alert Dialog
- Arna Text Field
- Arna Slider
- Arna Slider List Tile
- Arna Tooltip
- Arna Indicator
- Arna Search Field
- Arna Snack Bar
- Arna Banner
- TODO
- Special thanks
Add Arna as a dependency in your pubspec.yaml
dependencies:
arna: ^0.3.3
And import it
import 'package:arna/arna.dart';
ArnaApp(
debugShowCheckedModeBanner: false,
theme: ArnaThemeData(
accentColor: ArnaColors.accentColor,
brightness: Brightness.light,
),
home: Home(),
);
ArnaScaffold(
headerBarLeading: ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
),
title: "Title",
headerBarTrailing: ArnaIconButton(
icon: Icons.info_outlined,
onPressed: () {},
),
body: Container(),
);
ArnaSideScaffold(
headerBarLeading: ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
),
title: "Title",
headerBarTrailing: ArnaIconButton(
icon: Icons.info_outlined,
onPressed: () {},
),
items: [
NavigationItem(
title: "Dummy",
icon: Icons.info_outlined,
builder: (_) => Container(),
),
NavigationItem(
title: "Dummy",
icon: Icons.info_outlined,
builder: (_) => Container(),
),
],
);
ArnaMasterDetailScaffold(
headerBarLeading: ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
),
title: "Title",
headerBarTrailing: ArnaIconButton(
icon: Icons.info_outlined,
onPressed: () {},
),
emptyBody : Container(),
items: [
MasterNavigationItem(
title: "Title 1",
subtitle: "Subtitle 1",
builder: (_) => Container(),
),
MasterNavigationItem(
title: "Title 2",
subtitle: "Subtitle 2",
builder: (_) => Container(),
),
],
);
ArnaButton(
label: "Add",
icon: Icons.add_outlined,
onPressed: () {},
);
ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
tooltipMessage: "Add",
);
ArnaTextButton(
label: "Add",
onPressed: () {},
tooltipMessage: "Add",
);
ArnaLinkedButtons(
buttons: [
ArnaLinkedButton(
label: "Add",
icon: Icons.add_outlined,
onPressed: () {},
tooltipMessage: "Add",
),
ArnaLinkedButton(
icon: Icons.add_outlined,
onPressed: () {},
tooltipMessage: "Add",
),
ArnaLinkedButton(
label: "Add",
onPressed: () {},
tooltipMessage: "Add",
),
],
);
ArnaPopupMenuButton<String>(
itemBuilder: (context) => [
ArnaPopupMenuItem(
child: Text(
"First Item",
style: ArnaTheme.of(context).textTheme.textStyle,
),
value: "First Item",
),
const ArnaPopupMenuDivider(),
ArnaPopupMenuItem(
child: Text(
"Second Item",
style: ArnaTheme.of(context).textTheme.textStyle,
),
value: "Second Item",
),
],
onSelected: (String value) => showArnaSnackbar(
context: context,
message: value,
),
);
ArnaSegmentedControl(
groupValue: segmentedControlGroupValue,
children: {0: "Item 1", 1: "Item 2", 2: "Item 3"},
onValueChanged: (int i) => setState(() => segmentedControlGroupValue = i),
);
ArnaCheckBox(
value: _throwShotAway,
onChanged: (bool? newValue) => setState(() => _throwShotAway = newValue!),
);
ArnaCheckBoxListTile(
value: _throwShotAway,
title: "Title",
subtitle: "Subtitle",
onChanged: (bool? newValue) => setState(() => _throwShotAway = newValue!),
trailingButton: ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
),
);
ArnaRadio<SingingCharacter>(
value: SingingCharacter.lafayette,
groupValue: _character,
onChanged: (SingingCharacter newValue) => setState(() => _character = newValue),
);
ArnaRadioListTile<SingingCharacter>(
value: SingingCharacter.lafayette,
groupValue: _character,
title: "Title",
subtitle: "Subtitle",
onChanged: (SingingCharacter newValue) => setState(() => _character = newValue),
trailingButton: ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
),
);
ArnaSwitch(
value: _giveVerse,
onChanged: (bool newValue) => setState(() => _giveVerse = newValue),
);
ArnaSwitchListTile(
value: _giveVerse,
title: "Title",
subtitle: "Subtitle",
onChanged: (bool newValue) => setState(() => _giveVerse = newValue),
trailingButton: ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
),
);
ArnaList(
title: "Title",
items: [
ArnaListTile(
title: "Title 1",
subtitle: "Subtitle 1",
trailing: ArnaBadge(title: "Badge 1"),
onTap: () {},
),
ArnaListTile(
title: "Title 2",
subtitle: "Subtitle 2",
trailing: ArnaBadge(title: "Badge 2"),
),
],
);
ArnaExpansionPanel(
title: "Title 1",
subtitle: "Subtitle 1",
child: Container(),
);
ArnaCard(
height: 200,
width: 200,
child: Container(),
);
ArnaBadge(title: "Title");
ArnaHorizontalDivider();
ArnaVerticalDivider();
ArnaHorizontalSeparator();
ArnaVerticalSeparator();
ArnaIconButton(
icon: Icons.info_outlined,
onPressed: () => showArnaPopupDialog(
context: context,
title: "Title",
body: Container(),
),
);
ArnaIconButton(
icon: Icons.info_outlined,
onPressed: () => showArnaDialog(
context: context,
barrierDismissible: true,
dialog: ArnaAlertDialog(
title: "Title",
message: "Message",
primary: ArnaTextButton(
label: "OK",
onPressed: Navigator.of(context).pop,
),
),
),
);
ArnaTextField(
obscureText: true,
);
ArnaSlider(
value: _sliderValue,
min: 0,
max: 100,
onChanged: (double newValue) {
setState(() => _sliderValue = newValue);
},
);
ArnaSliderListTile(
value: _sliderValue,
title: "Title",
subtitle: "Subtitle",
onChanged: (double newValue) {
setState(() => _sliderValue = newValue);
},
trailingButton: ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
),
);
ArnaTooltip(
message: _sliderValue,
child: ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
),
);
ArnaIndicator(value: 0.35);
ArnaSearchField(
showSearch: showSearch,
controller: controller,
);
showArnaSnackbar(
context: context,
message: "SnackBar Title",
trailing: ArnaIconButton(
icon: Icons.add_outlined,
onPressed: () {},
),
);
ArnaBanner(
showBanner: showBanner,
title: "This is an information banner!",
trailing: ArnaIconButton(
icon: Icons.close_outlined,
onPressed: () => setState(() => showBanner = false),
),
);
- Dropdown Button
- Date and Time Pickers
- Chip
- flutter for flutter.
- bdlukaa for fluent_ui.
- GroovinChip for macos_ui.
- gtk-flutter for libadwaita.
- ubuntu for yaru_widgets.dart and yaru.dart.
- tvolkert for chicago.
- rsms for inter.
- WangYng for better_cupertino_slider.
- MingSern for flutter_bounceable.