Skip to content

4.0.0 release candidate 3

Pre-release
Pre-release
Compare
Choose a tag to compare
@bdlukaa bdlukaa released this 13 Aug 12:27
· 1019 commits to master since this release
  • NavigationView mode fixes:

    • When top overflow menu is opened, PaneItemHeader no longer throws an unsupported error
    • When on top mode, PaneItemHeader is properly aligned to the other items.
    • Added NavigationPaneThemeData.headerPadding, which is applied to PaneItemHeader on open, compact and minimal mode. It defaults to 10 pixels at the top
    • BREAKING PaneItem.getPropertyFromTitle is now widget.getProperty:

    Before:
    getPropertyFromTitle<TextStyle>()

    Now:
    title.getProperty<TextStyle>()

    This was changed because the properties of PaneItemHeader needed to be accessed, but the old version only supported to get the properties of PaneItem.title. It can be called on a Text, RichText or in an Icon widget

    • InheritedNavigationView is now accessible on the top overflow menu
    • Added NavigationPaneThemeData.selectedTopTextStyle and NavigationPaneThemeData.unselectedTopTextStyle, which is applied to the items on top mode
    • Fixed content focus on minimal mode
    • Updated default transitions for top mode: HorizontalSlidePageTransition
  • Fix incorrect translation of TimePicker in Traditional Chinese.

  • Added ScaffoldPage.resizeToAvoidBottomInset (#444)

  • Consider view padding for NavigationAppBar

  • Scrollbar updates (#356):

    • Correctly use backgroundColor to display the track color
    • Added padding and hoveringPadding
    • Check if animation is disposed before using it (#446)
  • Update AutoSuggestBox (#450):

    • Added .enableKeyboardControls. When true, items can be selected using the keyboard (#19)
    • Added .sorter, which lets you set a custom sort function for the suggestions. AutoSuggestBox.defaultItemSorter is used by default
    • Overlay's height is now correctly calculated based on the screen size. It no longer overlaps the screen. viewPadding is also taken into consideration
    • Close the overlay if the textbox width is changes (#456)
    • .items can be dynamically loaded (#387)
    • BREAKING .items is now a List<AutoSuggestBoxItem>:
      Before:
    AutoSuggestBox(
      items: [
        'Cat',
        'Dog',
        'Bird',
        'Horse',
      ],
      ...
    ),

    Now:

    AutoSuggestBox(
      items: [
        'Cat',
        'Dog',
        'Bird',
        'Horse',
      ].map((animal) {
        return AutoSuggestBoxItem(
          value: animal, // this takes a String
          child: Text('Animal $animal'), // this takes a Widget. If null, value is displayed as a text
          onFocusChange: (focused) {
            // this is called when the item is focused using the keyboard arrow keys
            if (focused) debugPrint('Focused animal $animal');
          },
          onSelected: () {
            // this is called when the item is selected
            debugPrint('Selected animal $animal');
          }
        );
      }).toList(),
      ...
    )
  • Combobox updates (#454):

    • Popup size is now correctly calculated (#413)
    • Correctly clip the popup while performing the animation (#379)
  • Correctly check if a locale is supported (#455)

Release candidate 2

  • Remove whitespace on ContentDialog if title is omitted (#418)
  • Apply correct color to the Date and Time Pickers button when selected (#415, #417)
  • Expose more useful properties to AutoSuggestBox (#419)
  • BREAKING PopupContentSizeInfo was renamed to ContentSizeInfo
  • Reworked ListTile (#422):
    • BREAKING Removed TappableListTile
    • Added support for single and multiple selection. Use ListTile.selectable (#409)
    • Added focus support
    • Use the Win UI design
  • Reviewed animation durations (#421)
    • BREAKING Removed .animationDuration and .animationCurve from ScrollbarThemeData
    • Added expandContractAnimationDuration and contractDelay to ScrollbarThemeData
  • NavigationPaneSize constraints are now correctly applied when in open mode (#336)
  • NavigationIndicator can't be invisble anymore when animation is stale (#335)
  • Updated TabView:
    • BREAKING Removed TabView.bodies. Now, Tab.body is used.
      Before

      TabView(
        tabs: [
          Tab(text: Text('Tab 1')),
          Tab(text: Text('Tab 2')),
        ],
        bodies: [
          Tab1Body(),
          Tab2Body(),
        ],
      ),

      Now:

      TabView(
        tabs: [
          Tab(
            text: Text('Tab 1'),
            body: Tab1Body(),
          ),
          Tab(
            text: Text('Tab 2'),
            body: Tab2Body(),
          ),
        ],
      ),
    • Updated TabView tabs' constraints and padding

    • Fixed tab width when TabWidthBehavior is compact

    • FlutterLogo is no longer the default tab Icon

  • DropDownButton menu is now sized correctly according to the screen size
  • If there isn't enough space to display the menu on the preferred position, Flyout will display on the opposite position (#435)

Release candidate 1

  • Exposed private properties that makes it easier to create custom panes for NavigationView (#365):

    • kCompactNavigationPaneWidth
    • kOpenNavigationPaneWidth
    • NavigationPane.changeTo
    • PaneItem.getPropertyFromTitle
  • PaneScrollConfiguration is now applied to custom pane on NavigationView

  • Added NavigationViewState.displayMode. It results in the current display mode used by the view, including the automatic display mode (#360):

    // Define the key
    final key = GlobalKey<NavigationViewState>();
    
    NavigationView(
      // pass the key to the view
      key: key,
      ...,
    )
    
    // Get the current display mode. Note that, in order to find out the automatic display mode,
    // the widget must have been built at least once
    final PaneDisplayMode currentDisplayMode = key.currentState.displayMode;
  • The app bar action no longer overflow when minimal pane/compact overlay is open (#361)

  • Update AutoSuggestBox:

    • It now uses Acrylic, but it can be disabled using DisableAcrylic
    • TextChangedReason.suggestionChoosen is now called properly
  • Updated TextBox:

    • TextBox colors were updated to match the Win 11 design.
    • Fluent Text Selection Control now make use of Acrylic. Its items were also updated
  • Updated pickers (#406):

    • If selected is null, a placeholder text is shown (#306)
    • Added new localization messages: hour, minute, AM, PM, month, dayand year.
    • BREAKING Removed .hourPlaceholder, .minutePlaceholder, .amText, .pmText from TimePicker. It was replaced, respectivelly, by the hour, minute, AM, PM localization messages
    • On DatePicker, it's now possible to change the order of the fields:
    DatePicker(
      ...,
      fieldOrder: [
        DatePickerField.day,
        DatePickerField.month,
        DatePickerField.year,
      ],
    )

    The fields are ordered based on the current locale by default

    • On DatePicker, the day and year fields are now formatted based on the current locale (getDateOrderFromLocale)
  • Update Slider (#405):

    • Added .thumbRadius and .trackHeight to SliderThemeData
    • The active track now isn't taller than the inactive track

What's Changed

New Contributors

Full Changelog: v3.12.0...v4.0.0-pre.3