senior_design_system 0.21.3 senior_design_system: ^0.21.3 copied to clipboard
Flutter package with Senior Design System widgets.
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import 'package:senior_design_tokens/senior_design_tokens.dart';
import 'package:senior_design_system/senior_design_system.dart';
import 'package:senior_design_system/senior_themes.dart';
import 'pages/action_button.example.dart';
import 'pages/animation.example.dart';
import 'pages/badge.example.dart';
import 'pages/balance.example.dart';
import 'pages/bottom_sheet.example.dart';
import 'pages/button.example.dart';
import 'pages/card.example.dart';
import 'pages/checkbox.example.dart';
import 'pages/colorful_header_structure.example.dart';
import 'pages/contact_book_item.dart';
import 'pages/draggable_list.example.dart';
import 'pages/dropdown_button.example.dart';
import 'pages/expansion_panel.example.dart';
import 'pages/evaluation.exemple.dart';
import 'pages/gradient_icon.example.dart';
import 'pages/image_cropper.example.dart';
import 'pages/info_card.example.dart';
import 'pages/loading.example.dart';
import 'pages/list.example.dart';
import 'pages/menu_list_item_example.dart';
import 'pages/message_card.example.dart';
import 'pages/modal.example.dart';
import 'pages/notification_list.example.dart';
import 'pages/notification_snackbar_example.dart';
import 'pages/pin_code_field.example.dart';
import 'pages/profile_picture_example.dart';
import 'pages/progress_bar.example.dart';
import 'pages/quotes_example.dart';
import 'pages/radio_button.example.dart';
import 'pages/rating.example.dart';
import 'pages/snackbar.example.dart';
import 'pages/square_buttons_menu.example.dart';
import 'pages/state_page.example.dart';
import 'pages/switch.example.dart';
import 'pages/text_field.example.dart';
import 'pages/timeline.example.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
SeniorTheme appTheme = seniorLightTheme;
return MultiProvider(
providers: [
Provider<SeniorTheme>.value(value: appTheme),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Senior Design System Showcase',
theme: appTheme.themeData, // Adicionando o tema do Flutter para o app
home: HomePage(),
),
);
}
}
class HomePage extends StatelessWidget {
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
final PageController _pageController = PageController();
@override
Widget build(BuildContext context) {
final drawerItems = examplePages
.asMap()
.map(
(pos, page) => MapEntry(
pos,
SeniorDrawerItem(
icon: page.icon,
onTap: () => _pageController.jumpToPage(pos),
title: page.title,
type: DrawerItemType.neutral,
),
),
)
.values
.toList();
return Scaffold(
key: _scaffoldKey,
body: SeniorBackdrop(
hasTopPadding: false,
title: Text('Senior Design System'),
leading: SeniorActionButton(
size: SeniorActionButtonSize.small,
icon: FontAwesomeIcons.bars,
style: SeniorActionButtonStyle(
iconColor: SeniorColors.pureWhite,
),
onTap: () => _scaffoldKey.currentState!.openDrawer(),
),
body: PageView.builder(
controller: _pageController,
itemBuilder: (context, pos) => examplePages.map((page) => page.pageComponent).toList()[pos],
itemCount: examplePages.length,
),
),
drawer: SeniorDrawer(
items: drawerItems,
svgLogoPath: 'assets/images/logo-name.svg',
footerText: 'powered by Senior Sistemas',
profilePicture: SeniorProfilePicture(
name: 'Albert Einstein',
radius: 24.0,
imageProvider: AssetImage('assets/images/albert-einstein.jpg'),
),
profileTitle: 'Albert Einstein',
profileSubtitle: 'Físico',
),
);
}
}
final List<Page> examplePages = [
Page(title: 'Action Button', icon: FontAwesomeIcons.stop, pageComponent: ActionButtonExample()),
Page(title: 'Animation', icon: FontAwesomeIcons.radiation, pageComponent: AnimationExample()),
Page(title: 'Badge', icon: FontAwesomeIcons.solidIdBadge, pageComponent: BadgeExemple()),
Page(title: 'Balance', icon: FontAwesomeIcons.scaleBalanced, pageComponent: BalanceExample()),
Page(title: 'Bottom Sheet', icon: FontAwesomeIcons.arrowUpFromBracket, pageComponent: BottomSheetExample()),
Page(title: 'Button', icon: FontAwesomeIcons.stop, pageComponent: ButtonExample()),
Page(title: 'Card', icon: FontAwesomeIcons.addressCard, pageComponent: CardExample()),
Page(title: 'Checkbox', icon: FontAwesomeIcons.squareCheck, pageComponent: CheckboxExample()),
Page(title: 'Contact Book Item', icon: FontAwesomeIcons.addressBook, pageComponent: ContactBookItemExample()),
Page(title: 'Draggable List', icon: FontAwesomeIcons.scribd, pageComponent: DraggableListExample()),
Page(title: 'Dropdown Button', icon: FontAwesomeIcons.caretDown, pageComponent: DropdownButtonExample()),
Page(title: 'Expansion Panel', icon: FontAwesomeIcons.addressCard, pageComponent: ExpansionPanelExample()),
Page(title: 'Evaluation', icon: FontAwesomeIcons.solidIdBadge, pageComponent: EvaluationExemple()),
Page(title: 'Gradient Icon', icon: FontAwesomeIcons.faceSmile, pageComponent: SeniorGradientIconExample()),
Page(title: 'Image Cropper', icon: FontAwesomeIcons.image, pageComponent: ImageCropperExample()),
Page(title: 'Info Card', icon: FontAwesomeIcons.addressCard, pageComponent: InfoCardExample()),
Page(title: 'List', icon: FontAwesomeIcons.list, pageComponent: ListExample()),
Page(title: 'Loading', icon: FontAwesomeIcons.spinner, pageComponent: LoadingExample()),
Page(title: 'Menu List Item', icon: FontAwesomeIcons.list, pageComponent: MenuListItemExample()),
Page(title: 'Message Card', icon: FontAwesomeIcons.addressCard, pageComponent: MessageCardExample()),
Page(title: 'Modal', icon: FontAwesomeIcons.square, pageComponent: ModalExample()),
Page(title: 'Notification List', icon: FontAwesomeIcons.list, pageComponent: NotificationListExample()),
Page(title: 'Notification Snackbar', icon: FontAwesomeIcons.cookieBite, pageComponent: NotificationSnackbarExample()),
Page(title: 'Pin Code Field', icon: FontAwesomeIcons.linesLeaning, pageComponent: PinCodeFieldExample()),
Page(title: 'Profile Picture', icon: FontAwesomeIcons.user, pageComponent: ProfilePictureExample()),
Page(title: 'Progress bar', icon: FontAwesomeIcons.barsProgress, pageComponent: ProgressBarExample()),
Page(title: 'Quotes', icon: FontAwesomeIcons.quoteRight, pageComponent: QuotesExample()),
Page(title: 'Radio Button', icon: FontAwesomeIcons.circleDot, pageComponent: RadioButtonExample()),
Page(title: 'Rating', icon: FontAwesomeIcons.star, pageComponent: RatingExample()),
Page(title: 'Screen Appbar', icon: FontAwesomeIcons.mobile, pageComponent: ColorfulHeaderStructureExample()),
Page(title: 'Snack bar', icon: FontAwesomeIcons.cookieBite, pageComponent: SnackbarExample()),
Page(title: 'Square Buttons Menu', icon: FontAwesomeIcons.tableCellsLarge, pageComponent: SquareButtonsMenuExample()),
Page(title: 'State Page', icon: FontAwesomeIcons.message, pageComponent: StatePageExample()),
Page(title: 'Switch', icon: FontAwesomeIcons.toggleOff, pageComponent: SwitchExample()),
Page(title: 'Text Field', icon: FontAwesomeIcons.textHeight, pageComponent: TextFieldExample()),
Page(title: 'Timeline', icon: FontAwesomeIcons.timeline, pageComponent: TimelineExample()),
];
class Page {
const Page({
required this.icon,
required this.pageComponent,
required this.title,
});
final IconData icon;
final Widget pageComponent;
final String title;
}