using System.Collections.Generic; using uiwidgets; using Unity.UIWidgets.engine2; using Unity.UIWidgets.foundation; using Unity.UIWidgets.material; using Unity.UIWidgets.painting; using Unity.UIWidgets.rendering; using Unity.UIWidgets.ui; using Unity.UIWidgets.widgets; using UnityEngine; using TextStyle = Unity.UIWidgets.painting.TextStyle; using ui_ = Unity.UIWidgets.widgets.ui_; namespace UIWidgetsSample { public class MaterialAppBarSample : UIWidgetsPanel { protected override void main() { ui_.runApp(new MaterialApp( showPerformanceOverlay: false, home: new MaterialAppBarWidget())); } protected new void OnEnable() { base.OnEnable(); } } public class MaterialAppBarWidget : StatefulWidget { public MaterialAppBarWidget(Key key = null) : base(key) { } public override State createState() { return new MaterialAppBarWidgetState(); } } public class MaterialAppBarWidgetState : State { Choice _selectedChoice = Choice.choices[0]; GlobalKey _scaffoldKey = GlobalKey.key(); VoidCallback _showBottomSheetCallback; public override void initState() { base.initState(); this._showBottomSheetCallback = this._showBottomSheet; } void _showBottomSheet() { this.setState(() => { this._showBottomSheetCallback = null; }); this._scaffoldKey.currentState.showBottomSheet((BuildContext subContext) => { ThemeData themeData = Theme.of(subContext); return new Container( decoration: new BoxDecoration( border: new Border( top: new BorderSide( color: themeData.disabledColor))), child: new Padding( padding: EdgeInsets.all(32.0f), child: new Text("This is a Material persistent bottom sheet. Drag downwards to dismiss it.", textAlign: TextAlign.center, style: new TextStyle( color: themeData.accentColor, fontSize: 16.0f)) ) ); }).closed.then((object obj) => { if (this.mounted) { this.setState(() => { this._showBottomSheetCallback = this._showBottomSheet; }); } }); } void _select(Choice choice) { this.setState(() => { this._selectedChoice = choice; }); } public override Widget build(BuildContext context) { return new Scaffold( key: this._scaffoldKey, appBar: new AppBar( title: new Text("Basic AppBar"), actions: new List { new IconButton( icon: new Icon(Choice.choices[0].icon), //color: Colors.blue, onPressed: () => { this._select((Choice.choices[0])); } ), new IconButton( icon: new Icon(Choice.choices[1].icon), //color: Colors.blue, onPressed: () => { this._select((Choice.choices[1])); } ), new PopupMenuButton( onSelected: this._select, itemBuilder: (BuildContext subContext) => { List> popupItems = new List>(); for (int i = 2; i < Choice.choices.Count; i++) { popupItems.Add(new PopupMenuItem( value: Choice.choices[i], child: new Text(Choice.choices[i].title))); } return popupItems; } ) } ), body: new Padding( padding: EdgeInsets.all(16.0f), child: new ChoiceCard(choice: this._selectedChoice) ), floatingActionButton: new FloatingActionButton( backgroundColor: Colors.redAccent, child: new Icon(Unity.UIWidgets.material.Icons.add_alert), onPressed: this._showBottomSheetCallback ), drawer: new Drawer( child: new ListView( padding: EdgeInsets.zero, children: new List { new ListTile( leading: new Icon(Unity.UIWidgets.material.Icons.account_circle), title: new Text("Login"), onTap: () => { } ), new Divider( height: 2.0f), new ListTile( leading: new Icon(Unity.UIWidgets.material.Icons.account_balance_wallet), title: new Text("Wallet"), onTap: () => { } ), new Divider( height: 2.0f), new ListTile( leading: new Icon(Unity.UIWidgets.material.Icons.accessibility), title: new Text("Balance"), onTap: () => { } ) } ) ) ); } } class Choice { public Choice(string title, IconData icon) { this.title = title; this.icon = icon; } public readonly string title; public readonly IconData icon; public static List choices = new List { new Choice("Car", Unity.UIWidgets.material.Icons.directions_car), new Choice("Bicycle", Unity.UIWidgets.material.Icons.directions_bike), new Choice("Boat", Unity.UIWidgets.material.Icons.directions_boat), new Choice("Bus", Unity.UIWidgets.material.Icons.directions_bus), new Choice("Train", Unity.UIWidgets.material.Icons.directions_railway), new Choice("Walk", Unity.UIWidgets.material.Icons.directions_walk) }; } class ChoiceCard : StatelessWidget { public ChoiceCard(Key key = null, Choice choice = null) : base(key: key) { this.choice = choice; } public readonly Choice choice; public override Widget build(BuildContext context) { TextStyle textStyle = Theme.of(context).textTheme.display1; return new Card( color: Colors.white, child: new Center( child: new Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, children: new List { new Icon(this.choice.icon, size: 128.0f, color: textStyle.color), new RaisedButton( child: new Text(this.choice.title, style: textStyle), onPressed: () => { SnackBar snackBar = new SnackBar( content: new Text(this.choice.title + " is chosen !"), action: new SnackBarAction( label: "Ok", onPressed: () => { })); Scaffold.of(context).showSnackBar(snackBar); }) } ) ) ); } } }