anchor.diff:      this.isDense = false,
       this.isExpanded = false,
     }) : assert(items == null || value == null || items.where((DropdownMenuItem<T> item) => item.value == value).length == 1),
  -      super(key: key);
  -
  -  /// The list of possible items to select among.
  +       assert(elevation != null),
  +       assert(iconSize != null),
  +       assert(isDense != null),
  +       assert(isExpanded != null),
  +       super(key: key);
  +
  +  /// The list of items the user can select.
  +  ///
  +  /// If the [onChanged] callback is null or the list of items is null
  +  /// then the dropdown button will be disabled, i.e. its arrow will be
  +  /// displayed in grey and it will not respond to input. A disabled button
  +  /// will display the [disabledHint] widget if it is non-null.
     final List<DropdownMenuItem<T>> items;
   
  -  /// The currently selected item, or null if no item has been selected. If
  -  /// value is null then the menu is popped up as if the first item was
  -  /// selected.
  +  /// The value of the currently selected [DropdownMenuItem], or null if no
  +  /// item has been selected. If `value` is null then the menu is popped up as
  +  /// if the first item were selected.
     final T value;
   
     /// Displayed if [value] is null.
  
positive.code: class DropdownButton<T> extends StatefulWidget {
    /// Creates a dropdown button.
    ///
    /// The [items] must have distinct values and if [value] isn't null it must be among them.
    /// If [items] or [onChanged] is null, the button will be disabled, the down arrow will be grayed out, and
    /// the [disabledHint] will be shown (if provided).
    ///
    /// The [elevation] and [iconSize] arguments must not be null (they both have
    /// defaults, so do not need to be specified).
    DropdownButton({
      Key key,
      @required this.items,
  
negative.code:   final Widget disabledHint;
  
    /// Called when the user selects an item.
    ///
    /// If the [onChanged] callback is null or the list of [items] is null
    /// then the dropdown button will be disabled, i.e. its arrow will be
    /// displayed in grey and it will not respond to input. A disabled button
    /// will display the [disabledHint] widget if it is non-null.
    final ValueChanged<T> onChanged;
  
    /// The z-coordinate at which to place the menu when open.
    ///
    /// The following elevations have defined shadows: 1, 2, 3, 4, 6, 8, 9, 12,
    /// 16, and 24. See [kElevationToShadow].
    ///
    /// Defaults to 8, the appropriate elevation for dropdown buttons.
    final int elevation;
  