mirror of
https://github.com/nisrulz/flutter-examples.git
synced 2025-05-30 14:06:31 +08:00
94 lines
2.7 KiB
Dart
94 lines
2.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
void main() {
|
|
runApp(new MaterialApp(
|
|
home: new MyApp(),
|
|
// Define the theme, set the primary swatch
|
|
theme: new ThemeData(primarySwatch: Colors.green),
|
|
));
|
|
}
|
|
|
|
class MyApp extends StatelessWidget {
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
// Declare some constants
|
|
final double myTextSize = 30.0;
|
|
final double myIconSize = 40.0;
|
|
final TextStyle myTextStyle =
|
|
new TextStyle(color: Colors.grey, fontSize: myTextSize);
|
|
|
|
return new Scaffold(
|
|
appBar: new AppBar(
|
|
title: new Text("Stateless Widget"),
|
|
),
|
|
body: new Container(
|
|
// Sets the padding in the main container
|
|
padding: const EdgeInsets.only(bottom: 2.0),
|
|
child: new Center(
|
|
child: new Column(
|
|
// Makes the cards stretch in horizontal axis
|
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
|
children: <Widget>[
|
|
// Setup the card
|
|
new MyCard(
|
|
// Setup the text
|
|
title: new Text(
|
|
"Favorite",
|
|
style: myTextStyle,
|
|
),
|
|
// Setup the icon
|
|
icon: new Icon(Icons.favorite,
|
|
size: myIconSize, color: Colors.red)),
|
|
new MyCard(
|
|
title: new Text(
|
|
"Alarm",
|
|
style: myTextStyle,
|
|
),
|
|
icon: new Icon(Icons.alarm,
|
|
size: myIconSize, color: Colors.blue)),
|
|
new MyCard(
|
|
title: new Text(
|
|
"Airport Shuttle",
|
|
style: myTextStyle,
|
|
),
|
|
icon: new Icon(Icons.airport_shuttle,
|
|
size: myIconSize, color: Colors.amber)),
|
|
new MyCard(
|
|
title: new Text(
|
|
"Done",
|
|
style: myTextStyle,
|
|
),
|
|
icon: new Icon(Icons.done,
|
|
size: myIconSize, color: Colors.green)),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
// Create a reusable stateless widget
|
|
class MyCard extends StatelessWidget {
|
|
final Widget icon;
|
|
final Widget title;
|
|
|
|
// Constructor. {} here denote that they are optional values i.e you can use as: new MyCard()
|
|
MyCard({this.title, this.icon});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return new Container(
|
|
padding: const EdgeInsets.only(bottom: 1.0),
|
|
child: new Card(
|
|
child: new Container(
|
|
padding: const EdgeInsets.all(20.0),
|
|
child: new Column(
|
|
children: <Widget>[this.title, this.icon],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|