import 'package:flutter/material.dart';
class DidiSample extends StatefulWidget{
@override
_DidiSampleState createState() => new _DidiSampleState();
}
class _DidiSampleState extends State<DidiSample>{
Choice _selectedChoice = choices[0];
void _select(Choice choice){
setState(() {
_selectedChoice = choice;
});
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text("滴滴出行"),
actions: <Widget>[
IconButton(
icon: Icon(choices[0].icon),
onPressed: (){
_select(choices[0]);
},
),
IconButton(
icon: Icon(choices[1].icon),
onPressed: (){
_select(choices[1]);
},
),
PopupMenuButton<Choice>(
onSelected: _select,
itemBuilder: (BuildContext context){
return choices.skip(2).map<PopupMenuItem<Choice>>((Choice choice){
return PopupMenuItem<Choice>(
value:choice,
child: Text(choice.title),
);
}).toList();
},
)
],
),
body: Padding(
padding: EdgeInsets.all(20),
child: ChoiceDidi(choice: _selectedChoice,),
),
),
);
}
}
class Choice{
final String title;
final IconData icon;
const Choice({this.title, this.icon});
}
const List<Choice> choices = <Choice>[
Choice(title: '自駕', icon:Icons.directions_car),
Choice(title: '乘般', icon:Icons.directions_boat),
Choice(title: '自行車',icon: Icons.directions_bike),
Choice(title: '飛機', icon:Icons.directions_bus),
Choice(title: '火車', icon:Icons.directions_railway)
];
class ChoiceDidi extends StatelessWidget{
const ChoiceDidi({Key key, this.choice}):super(key:key);
final Choice choice;
@override
Widget build(BuildContext context) {
// TODO: implement build
final TextStyle textStyle = Theme.of(context).textTheme.display1;
return Center(
child: Card(
color: Colors.white,
child: Column(
children: <Widget>[
Icon(choice.icon, size: 128.0, color: textStyle.color,),
Text(choice.title, style: textStyle,)
],
),
),
);
}
}
void main(){
runApp(DidiSample());
}