简体   繁体   English

Navigationrail 前导/尾随左对齐

[英]Navigationrail leading/trailing align to left

I have a Navigationrail widget with a button to extend/collapse it.我有一个带有按钮的Navigationrail小部件来扩展/折叠它。 Trailing/leading widgets in one line with NavigationRailDestination when extend=false , but when extend=true trailing/leading widgets always align to center.extend=false时, Trailing/leading小部件与NavigationRailDestination在一行中,但当extend=true时, trailing/leading小部件始终与中心对齐。

Is it possible to align it to the left/right?是否可以将其与左/右对齐?

My goal: trailing/leading widgets should not change it's positions to center when navigationrail extended.我的目标:当navigationrail扩展时, trailing/leading小部件不应将其位置更改为居中。

在此处输入图像描述

I found a solution by editing this example: https://api.flutter.dev/flutter/material/NavigationRail/extendedAnimation.html我通过编辑这个例子找到了一个解决方案: https://api.flutter.dev/flutter/material/NavigationRail/extendedAnimation.html

Solution: use Animation of NavigationRail解决方法:使用NavigationRailAnimation

final Animation<double> animation =
        NavigationRail.extendedAnimation(context);

and then change the width/padding according to it with lerpDouble function:然后使用 lerpDouble function 根据它更改宽度/填充:

padding: EdgeInsets.only(
        right: lerpDouble(0, 200, animation.value)!,
        bottom: 30,
      ),

Full working code:完整的工作代码:

import 'dart:ui';
import 'package:flutter/material.dart';

class NavigationRailMenuButton extends StatelessWidget {

   const NavigationRailMenuButton({super.key, this.onPressed});
   final VoidCallback? onPressed;
   
   @override
   Widget build(BuildContext context) {
    final Animation<double> animation =
        NavigationRail.extendedAnimation(context);
    return AnimatedBuilder(
      animation: animation,
      builder: (BuildContext context, Widget? child) {
        return Container(
          padding: EdgeInsets.only(
            right: lerpDouble(0, 200, animation.value)!,
          ),
          child: IconButton(
            icon: const Icon(Icons.menu),
            iconSize: 32,
            onPressed: onPressed,
          ),
        );
      },
    );
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM