Skip to content

Flutter Favorite

Compare
Choose a tag to compare
@bdlukaa bdlukaa released this 03 Feb 19:13
· 1655 commits to master since this release
  • Tests (#142)

  • Added Material Theme to Fluent Theme Builder (#133)

  • Add more customization options to PaneItem (#111, #144)

  • NavigationView updates BREAKING:

    • Properly add item key to PaneItem in top mode (#143)
    • Items bounds and positions are fetched when the item list is scrolled as well to prevent misalignment
    • Added the helper functions NavigationIndicator.end and NavigationIndicator.sticky
    • Use Curves.easeIn for sticky navigation indicator by default
    • Use the correct accent color for navigation indicators by default
    • EntrancePageTransition is now the correct page transition used when display mode is top
    • Apply correct press effect for PaneItem when display mode is top
    • BREAKING Removed NavigationPane.defaultNavigationIndicator
    • BREAKING Replaced offsets and sizes with pane in NavigationIndicator

    Before:

    pane: NavigationPane(
      indicatorBuilder: ({
        required BuildContext context,
        /// The navigation pane corresponding to this indicator
        required NavigationPane pane,
        /// Corresponds to the current display mode. If top, Axis.vertical
        /// is passed, otherwise Axis.vertical
        Axis? axis,
        /// Corresponds to the pane itself as a widget. The indicator is
        /// rendered over the whole pane.
        required Widget child,
      }) {
        if (pane.selected == null) return child;
        assert(debugCheckHasFluentTheme(context));
        final theme = NavigationPaneThemeData.of(context);
    
        axis??= Axis.horizontal;
    
        return EndNavigationIndicator(
          index: pane.selected,
          offsets: () => pane.effectiveItems.getPaneItemsOffsets  (pane.paneKey),
          sizes: pane.effectiveItems.getPaneItemsSizes,
          child: child,
          color: theme.highlightColor,
          curve: theme.animationCurve ?? Curves.linear,
          axis: axis,
        );
      },
    ),

    Now:

    pane: NavigationPane(
      indicatorBuilder: ({
        required BuildContext context,
        /// The navigation pane corresponding to this indicator
        required NavigationPane pane,
        /// Corresponds to the current display mode. If top, Axis.vertical
        /// is passed, otherwise Axis.vertical
        required Axis axis,
        /// Corresponds to the pane itself as a widget. The indicator is
        /// rendered over the whole pane.
        required Widget child,
      }) {
        if (pane.selected == null) return child;
        assert(debugCheckHasFluentTheme(context));
        final theme = NavigationPaneThemeData.of(context);
    
        return EndNavigationIndicator(
          index: pane.selected,
          pane: pane,
          child: child,
          color: theme.highlightColor,
          curve: theme.animationCurve ?? Curves.linear,
          axis: axis,
        );
      },
    ),