
This reverts commit f41b3411da35929b09009e47cb52474389e42874, reversing changes made to e33d8d96212f3e337a6660f1eb1118bffc945bf5. This was a bad check-in due to my mangling uploading a new version of the branch from a different machine. This reverts https://github.com/flutter/flutter/pull/2639 and will be replaced by https://github.com/flutter/flutter/pull/2640
208 lines
7.2 KiB
Dart
208 lines
7.2 KiB
Dart
// Copyright 2016 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
class MenuDemo extends StatefulComponent {
|
|
MenuDemo({ Key key }) : super(key: key);
|
|
|
|
MenuDemoState createState() => new MenuDemoState();
|
|
}
|
|
|
|
class MenuDemoState extends State<MenuDemo> {
|
|
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
|
|
|
|
final String _simpleValue1 = 'Menu item value one';
|
|
final String _simpleValue2 = 'Menu item value two';
|
|
final String _simpleValue3 = 'Menu item value three';
|
|
String _simpleValue;
|
|
|
|
final String _checkedValue1 = 'One';
|
|
final String _checkedValue2 = 'Two';
|
|
final String _checkedValue3 = 'Free';
|
|
final String _checkedValue4 = 'Four';
|
|
List<String> _checkedValues;
|
|
|
|
void initState() {
|
|
super.initState();
|
|
_simpleValue = _simpleValue2;
|
|
_checkedValues = <String>[_checkedValue3];
|
|
}
|
|
|
|
void showInSnackBar(String value) {
|
|
_scaffoldKey.currentState.showSnackBar(new SnackBar(
|
|
content: new Text(value)
|
|
));
|
|
}
|
|
|
|
void showMenuSelection(String value) {
|
|
if (<String>[_simpleValue1, _simpleValue2, _simpleValue3].contains(value))
|
|
_simpleValue = value;
|
|
showInSnackBar('You selected: $value');
|
|
}
|
|
|
|
void showCheckedMenuSelections(String value) {
|
|
if (_checkedValues.contains(value))
|
|
_checkedValues.remove(value);
|
|
else
|
|
_checkedValues.add(value);
|
|
|
|
showInSnackBar('Checked $_checkedValues');
|
|
}
|
|
|
|
bool isChecked(String value) => _checkedValues.contains(value);
|
|
|
|
Widget build(BuildContext context) {
|
|
return new Scaffold(
|
|
key: _scaffoldKey,
|
|
toolBar: new ToolBar(
|
|
center: new Text('Menus'),
|
|
right: <Widget>[
|
|
new PopupMenuButton<String>(
|
|
onSelected: showMenuSelection,
|
|
items: <PopupMenuItem<String>>[
|
|
new PopupMenuItem<String>(
|
|
value: 'ToolBar Menu',
|
|
child: new Text('ToolBar Menu')
|
|
),
|
|
new PopupMenuItem<String>(
|
|
value: 'Right Here',
|
|
child: new Text('Right Here')
|
|
),
|
|
new PopupMenuItem<String>(
|
|
value: 'Hooray!',
|
|
child: new Text('Hooray!')
|
|
),
|
|
]
|
|
)
|
|
]
|
|
),
|
|
body: new Block(
|
|
padding: const EdgeDims.all(8.0),
|
|
children: <Widget>[
|
|
// Pressing the PopupMenuButton on the right of this item shows
|
|
// a simple menu with one disabled item. Typically the contents
|
|
// of this "contextual menu" would reflect the app's state.
|
|
new ListItem(
|
|
primary: new Text('An item with a context menu button'),
|
|
right: new PopupMenuButton<String>(
|
|
onSelected: showMenuSelection,
|
|
items: <PopupMenuItem<String>>[
|
|
new PopupMenuItem<String>(
|
|
value: _simpleValue1,
|
|
child: new Text('Context menu item one')
|
|
),
|
|
new PopupMenuItem<String>(
|
|
enabled: false,
|
|
child: new Text('A disabled menu item')
|
|
),
|
|
new PopupMenuItem<String>(
|
|
value: _simpleValue3,
|
|
child: new Text('Context menu item three')
|
|
),
|
|
]
|
|
)
|
|
),
|
|
// Pressing the PopupMenuButton on the right of this item shows
|
|
// a menu whose items have text labels and icons and a divider
|
|
// That separates the first three items from the last one.
|
|
new ListItem(
|
|
primary: new Text('An item with a sectioned menu'),
|
|
right: new PopupMenuButton<String>(
|
|
onSelected: showMenuSelection,
|
|
items: <PopupMenuEntry<String>>[
|
|
new PopupMenuItem<String>(
|
|
value: 'Preview',
|
|
child: new ListItem(
|
|
left: new Icon(icon: Icons.visibility),
|
|
primary: new Text('Preview')
|
|
)
|
|
),
|
|
new PopupMenuItem<String>(
|
|
value: 'Share',
|
|
child: new ListItem(
|
|
left: new Icon(icon: Icons.person_add),
|
|
primary: new Text('Share')
|
|
)
|
|
),
|
|
new PopupMenuItem<String>(
|
|
value: 'Get Link',
|
|
child: new ListItem(
|
|
left: new Icon(icon: Icons.link),
|
|
primary: new Text('Get Link')
|
|
)
|
|
),
|
|
new PopupMenuDivider(),
|
|
new PopupMenuItem<String>(
|
|
value: 'Remove',
|
|
child: new ListItem(
|
|
left: new Icon(icon: Icons.delete),
|
|
primary: new Text('Remove')
|
|
)
|
|
)
|
|
]
|
|
)
|
|
),
|
|
// This entire list item is a PopupMenuButton. Tapping anywhere shows
|
|
// a menu whose current value is highlighted and aligned over the
|
|
// list item's center line.
|
|
new PopupMenuButton<String>(
|
|
initialValue: _simpleValue,
|
|
onSelected: showMenuSelection,
|
|
child: new ListItem(
|
|
primary: new Text('An item with a simple menu'),
|
|
secondary: new Text(_simpleValue)
|
|
),
|
|
items: <PopupMenuItem<String>>[
|
|
new PopupMenuItem<String>(
|
|
value: _simpleValue1,
|
|
child: new Text(_simpleValue1)
|
|
),
|
|
new PopupMenuItem<String>(
|
|
value: _simpleValue2,
|
|
child: new Text(_simpleValue2)
|
|
),
|
|
new PopupMenuItem<String>(
|
|
value: _simpleValue3,
|
|
child: new Text(_simpleValue3)
|
|
)
|
|
]
|
|
),
|
|
// Pressing the PopupMenuButton on the right of this item shows a menu
|
|
// whose items have checked icons that reflect this app's state.
|
|
new ListItem(
|
|
primary: new Text('An item with a checklist menu'),
|
|
right: new PopupMenuButton<String>(
|
|
onSelected: showCheckedMenuSelections,
|
|
items: <PopupMenuItem<String>>[
|
|
new CheckedPopupMenuItem(
|
|
value: _checkedValue1,
|
|
checked: isChecked(_checkedValue1),
|
|
child: new Text(_checkedValue1)
|
|
),
|
|
new CheckedPopupMenuItem<String>(
|
|
value: _checkedValue2,
|
|
enabled: false,
|
|
checked: isChecked(_checkedValue2),
|
|
child: new Text(_checkedValue2)
|
|
),
|
|
new CheckedPopupMenuItem<String>(
|
|
value: _checkedValue3,
|
|
checked: isChecked(_checkedValue3),
|
|
child: new Text(_checkedValue3)
|
|
),
|
|
new CheckedPopupMenuItem<String>(
|
|
value: _checkedValue4,
|
|
checked: isChecked(_checkedValue4),
|
|
child: new Text(_checkedValue4)
|
|
)
|
|
]
|
|
)
|
|
)
|
|
]
|
|
)
|
|
);
|
|
}
|
|
}
|