// Copyright (C) 2023 WYATT GROUP // Please see the AUTHORS file for details. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; import 'package:wyatt_ui_kit/wyatt_ui_kit.dart'; const _color1 = Color(0xFF3C97FB); const _color2 = Color(0xFF446DF4); const _color3 = Color.fromARGB(255, 26, 132, 247); const _color4 = Color.fromARGB(255, 19, 68, 228); const _colors = [_color1, _color2]; const _colorsDarken = [_color3, _color4]; const _disabled = Color(0xFF6B7280); const _background = Color(0xFF16191D); const _disabledBackground = Color(0xFF16191D + 0x66FFFFFF); const _disabledColors = [Color(0xFF60656A), Color(0xFF383C40)]; const _selectedColors = [Color(0xFF50CE99), Color(0xFF339572)]; const _invalidColor = Color(0xFFFB5E3C); class Buttons extends StatelessWidget { const Buttons({super.key}); @override Widget build(BuildContext context) => ListView( cacheExtent: 2000, children: [ const Gap(20), Align( child: Text( 'Buttons', style: Theme.of(context).textTheme.titleLarge, ), ), const Gap(20), Center( child: FlatButton( label: const TextWrapper('Voir notre savoir faire'), normalStyle: const FlatButtonStyle( foregroundColors: MultiColor(_colors), backgroundColors: MultiColor.single(Colors.transparent), borderColors: MultiColor(_colors), stroke: 3, ), hoveredStyle: const FlatButtonStyle( foregroundColors: MultiColor.single(Colors.white), backgroundColors: MultiColor(_colors), borderColors: MultiColor(_colors), stroke: 3, ), tappedStyle: const FlatButtonStyle( foregroundColors: MultiColor.single(Colors.white), backgroundColors: MultiColor(_colorsDarken), borderColors: MultiColor(_colorsDarken), stroke: 3, ), prefix: const Icon( Icons.arrow_forward_rounded, ), suffix: const Icon( Icons.arrow_forward_rounded, ), ), ), const Gap(20), FlatButton( label: TextWrapper( 'Voir notre savoir faire', style: context.textTheme.titleLarge?.copyWith(color: Colors.white), ), normalStyle: const FlatButtonStyle( backgroundColors: MultiColor(_colors), ), prefix: const Icon( Icons.arrow_forward_rounded, color: Colors.white, ), suffix: const Icon( Icons.arrow_forward_rounded, color: Colors.white, ), ), const Gap(20), ColoredBox( color: _background, child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Column( children: [ const Gap(20), FlatButton( label: TextWrapper( 'Démarrer mon projet', style: context.textTheme.titleLarge ?.copyWith(color: _disabled), ), normalStyle: const FlatButtonStyle( borderColors: MultiColor(_disabledColors), backgroundColors: MultiColor.single(_disabledBackground), stroke: 1, ), ), const Gap(20), FlatButton( label: TextWrapper( 'Démarrer mon projet', style: context.textTheme.titleLarge ?.copyWith(color: Colors.white), ), normalStyle: const FlatButtonStyle( backgroundColors: MultiColor(_colors), ), ), const Gap(20), ], ), const Gap(20), Column( children: [ const Gap(20), FlatButton( label: TextWrapper( 'Aller voir nos réalisations', style: context.textTheme.titleLarge ?.copyWith(color: Colors.white), ), normalStyle: const FlatButtonStyle( borderColors: MultiColor(_colors), backgroundColors: MultiColor.single(_disabledBackground), stroke: 3, ), suffix: const Icon( Icons.arrow_forward_rounded, color: Colors.white, ), ), const Gap(20), FlatButton( label: TextWrapper( 'Aller voir nos réalisations', style: context.textTheme.titleLarge ?.copyWith(color: Colors.white), ), normalStyle: const FlatButtonStyle( backgroundColors: MultiColor(_colors), ), suffix: const Icon( Icons.arrow_forward_rounded, color: Colors.white, ), ), const Gap(20), ], ), ], ), ), ), const Gap(20), FlatButton( label: TextWrapper( 'Démarrer mon projet', style: context.textTheme.titleLarge?.copyWith(color: Colors.white), ), disabledStyle: const FlatButtonStyle( backgroundColors: MultiColor.single(Colors.blue), ), normalStyle: const FlatButtonStyle( backgroundColors: MultiColor(_colors), ), hoveredStyle: const FlatButtonStyle( backgroundColors: MultiColor.single(Colors.green), ), focusedStyle: const FlatButtonStyle( backgroundColors: MultiColor.single(Colors.yellow), ), tappedStyle: const FlatButtonStyle( backgroundColors: MultiColor.single(Colors.red), ), ), const Gap(20), ColoredBox( color: _background, child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Column( children: [ const Gap(20), SymbolButton( icon: const Icon( Icons.android, size: 25, ), label: const TextWrapper('Texte'), normalStyle: const SymbolButtonStyle( borderColors: MultiColor(_disabledColors), foregroundColors: MultiColor.single(Colors.white), backgroundColors: MultiColor.single(_disabledBackground), stroke: 1, ), hoveredStyle: const SymbolButtonStyle( borderColors: MultiColor(_disabledColors), foregroundColors: MultiColor.single(Colors.white), backgroundColors: MultiColor.single(_background), stroke: 1, ), selectedStyle: const SymbolButtonStyle( borderColors: MultiColor(_selectedColors), foregroundColors: MultiColor.single(Colors.white), backgroundColors: MultiColor.single(_disabledBackground), stroke: 1, ), ) ..bloc.onClickUpIn() ..bloc.freeze(), const Gap(20), SymbolButton( icon: const Icon( Icons.android, size: 25, ), label: const TextWrapper('Texte'), normalStyle: const SymbolButtonStyle( borderColors: MultiColor(_disabledColors), foregroundColors: MultiColor.single(Colors.white), backgroundColors: MultiColor.single(_disabledBackground), stroke: 1, ), hoveredStyle: const SymbolButtonStyle( borderColors: MultiColor(_disabledColors), foregroundColors: MultiColor.single(Colors.white), backgroundColors: MultiColor.single(_background), stroke: 1, ), selectedStyle: const SymbolButtonStyle( borderColors: MultiColor(_selectedColors), foregroundColors: MultiColor.single(Colors.white), backgroundColors: MultiColor.single(_disabledBackground), stroke: 1, ), )..bloc.freeze(), const Gap(20), ], ), const Gap(20), Row( children: [ SimpleIconButton( icon: const Icon( Icons.storm_outlined, size: 17, ), normalStyle: const SimpleIconButtonStyle( backgroundColors: MultiColor.single(_disabled), ), hoveredStyle: SimpleIconButtonStyle( backgroundColors: MultiColor.single(_disabledColors.last), ), ), const Gap(10), SimpleIconButton( icon: const Icon( Icons.sunny, size: 17, ), normalStyle: const SimpleIconButtonStyle( backgroundColors: MultiColor.single(_disabled), ), hoveredStyle: SimpleIconButtonStyle( backgroundColors: MultiColor.single(_disabledColors.last), ), ), const Gap(10), SimpleIconButton( icon: const Icon( Icons.wechat, size: 17, ), normalStyle: const SimpleIconButtonStyle( backgroundColors: MultiColor.single(_disabled), ), hoveredStyle: SimpleIconButtonStyle( backgroundColors: MultiColor.single(_disabledColors.last), ), ) ], ), const Gap(20), Row( children: [ SymbolButton( icon: const FlutterLogo( size: 50, ), normalStyle: const SymbolButtonStyle( dimension: 73, backgroundColors: MultiColor.single(Colors.white), ), hoveredStyle: SymbolButtonStyle( dimension: 73, backgroundColors: MultiColor.single(Colors.grey[300]), ), ), ], ), const Gap(20), FileSelectionButton( leading: const DecoratedBox( decoration: BoxDecoration( color: _disabled, borderRadius: BorderRadius.all( Radius.circular(5), ), ), child: Padding( padding: EdgeInsets.all(8), child: Icon( Icons.file_upload_outlined, color: Colors.white, ), ), ), title: TextWrapper( 'Ajouter un fichier', style: Theme.of(context) .textTheme .titleLarge ?.copyWith(color: _disabled), ), subTitle: TextWrapper.text('Taille max: 20 Mo'), normalStyle: const FileSelectionButtonStyle( backgroundColors: MultiColor.single(_disabledBackground), foregroundColors: MultiColor.single(_disabled), borderColors: MultiColor.single(_disabled), ), hoveredStyle: const FileSelectionButtonStyle( backgroundColors: MultiColor.single(_disabledBackground), foregroundColors: MultiColor.single(_disabled), borderColors: MultiColor.single(Colors.white), ), invalidStyle: const FileSelectionButtonStyle( backgroundColors: MultiColor.single(_disabledBackground), foregroundColors: MultiColor.single(_invalidColor), borderColors: MultiColor.single(_invalidColor), ), ) ], ), ), ), const Gap(20), ], ); }