bluff
1.0.0
Bluff ist ein in Dart geschriebener statischer Website-Generator, der von Flutter-Widgets inspiriert ist.
Warum ?
Ich habe dieses Projekt gestartet, weil ich es leid war, jedes Mal, wenn ich eine kleine statische Website schreiben muss, auf eine JS-Umgebung umzusteigen. Ich wollte, dass das Konzept Flutter so nahe wie möglich kommt, um die gleiche Art und Weise bei der Entwicklung von Benutzeroberflächen beizubehalten und nicht immer wieder Zeit damit zu verlieren, Paradigmen neu zu erlernen.
Warum nicht Flutter für das Web verwenden?
Nur weil ich eine wirklich schlanke Website mit guten SEOs wollte. Die Migration zu Flutter für das Web sollte jedoch ziemlich einfach sein.
Ein einfaches Anwendungsbeispiel:
import 'package:bluff/bluff.dart' ;
Future main () async {
final app = Application (
availableSizes : [
MediaSize .small,
MediaSize .medium,
],
supportedLocales : [
Locale ( 'fr' , 'FR' ),
Locale ( 'en' , 'US' ),
],
routes : [
homeRoute,
],
);
;
await publish (app);
}
final homeRoute = Route (
title : (context) {
final locale = Localizations . localeOf (context);
if (locale.languageCode == 'fr' ) return 'Accueil' ;
return 'Home' ;
},
relativeUrl : 'index' ,
builder : (context) => Home (),
);
class Home extends StatelessWidget {
@override
Widget build ( BuildContext context) {
final mediaQuery = MediaQuery . of (context);
final theme = Theme . of (context);
return Column (
crossAxisAlignment : CrossAxisAlignment .stretch,
children : < Widget > [
Flex (
direction : mediaQuery.size == MediaSize .small
? Axis .vertical
: Axis .horizontal,
children : < Widget > [
Expanded (
child : Container (
height : 300 ,
decoration : BoxDecoration (
image : DecorationImage (
image : ImageProvider . asset ( 'images/logo_dart_192px.svg' ),
),
),
),
),
Padding (
padding : EdgeInsets . all ( 20 ),
child : Text ( 'Hello world!' ),
),
Container (
width : 200 ,
height : 200 ,
decoration : BoxDecoration (
color : const Color ( 0xFF0000FF ),
borderRadius : BorderRadius . circular ( 5 ),
boxShadow : [
BoxShadow (
color : const Color ( 0xAA0000FF ),
blurRadius : 10 ,
offset : Offset ( 10 , 10 ),
),
],
),
),
Image . asset (
'images/logo_dart_192px.svg' ,
fit : BoxFit .cover,
),
Click (
newTab : true ,
url : 'https://www.google.com' ,
builder : (context, state) {
return Container (
child : Text (
'Button' ,
style : theme.text.paragraph. merge (
TextStyle (
color : state == ClickState .hover
? const Color ( 0xFFFFFFFF )
: const Color ( 0xFF0000FF ),
),
),
),
padding : EdgeInsets . all ( 20 ),
decoration : BoxDecoration (
color : state == ClickState .hover
? const Color ( 0xFF0000FF )
: const Color ( 0x440000FF ),
borderRadius : BorderRadius . circular ( 5 ),
),
);
},
)
],
)
],
);
}
}