Flutter导航过渡动画插件transit_navigation_view的使用

transit_navigation_view介绍

transit_navigation_view 是一个用于在 Flutter 中实现导航过渡动画的插件。它可以帮助开发者轻松地创建复杂的导航界面,并且支持丰富的动画效果。


Getting Started

此项目是一个 Flutter 插件项目的起点,旨在为 Android 和/或 iOS 提供平台特定的实现代码。如果您想了解更多关于如何开始使用 Flutter 的信息,请访问 Flutter 官方文档


transit_navigation_view使用示例

以下是一个完整的示例代码,展示如何使用 transit_navigation_view 插件来实现导航过渡动画。

示例代码

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

// 定义两个不同的 TransitData 对象
final transitData1 = TransitData(
  dptTime: '10:00', // 出发时间
  arvTime: '10:20', // 到达时间
  numOfTransit: 2,  // 换乘次数
  totalFee: 2000,   // 总费用
  totalTime: '1時間', // 总耗时
  walkTime: '10分', // 步行时间
  distance: '100m', // 距离
  flagRaku: true,   // 是否快速
  flagHaya: true,   // 是否便宜
  flagYasu: true,   // 是否舒适
  stationDataList: [
    StationData(
      timeString: '10:00',
      stationString: '東京駅',
    ),
    StationData(
      timeString: '10:10',
      stationString: '新宿駅',
    ),
    StationData(
      timeString: '10:20',
      stationString: '渋谷駅',
    ),
    StationData(
      timeString: '10:30',
      stationString: '岐阜駅',
    ),
  ],
  passDataList: [
    PassData(
      passType: PassType.bus,
      timeString: '10分',
      passString: '名城線',
      feeString: '1000円',
    ),
    PassData(
      passType: PassType.subway,
      timeString: '10分',
      passString: '山手線',
      feeString: '1000円',
    ),
    PassData(
      passType: PassType.walk,
      timeString: '10分',
      passString: '徒歩',
      feeString: '',
    ),
  ],
);

final transitData2 = TransitData(
  dptTime: '10:00',
  arvTime: '10:20',
  numOfTransit: 0,
  totalFee: 1000,
  totalTime: '1時間',
  stationDataList: [
    StationData(
      timeString: '10:00',
      stationString: '東京駅',
    ),
    StationData(
      timeString: '10:10',
      stationString: '新宿駅',
    ),
  ],
  passDataList: [
    PassData(
      passType: PassType.bus,
      timeString: '10分',
      passString: '名城線',
      feeString: '1000円',
    ),
  ],
);

// 定义底部的小部件
Widget testWidget = Container(
  height: 50,
  color: Colors.red,
);

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: TransitNavigationScaffold(
        bottomWidget: testWidget, // 底部小部件
        transitDataList: [transitData1, transitData2], // 导航数据列表
      ),
    );
  }
}

更多关于Flutter导航过渡动画插件transit_navigation_view的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter导航过渡动画插件transit_navigation_view的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


transit_navigation_view 是一个用于 Flutter 的导航过渡动画插件,它可以帮助你在页面之间实现平滑的过渡效果。这个插件通常用于在导航时添加自定义的动画效果,以提升用户体验。

安装

首先,你需要在 pubspec.yaml 文件中添加 transit_navigation_view 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  transit_navigation_view: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

基本用法

transit_navigation_view 插件通常用于在页面导航时添加过渡动画。以下是一个简单的示例,展示如何使用这个插件:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Page'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.push(
              context,
              TransitRoute(
                builder: (context) => SecondPage(),
                transitionType: TransitionType.slideLeft, // 选择过渡动画类型
              ),
            );
          },
          child: Text('Go to Second Page'),
        ),
      ),
    );
  }
}

class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Second Page'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text('Go Back'),
        ),
      ),
    );
  }
}

过渡动画类型

transit_navigation_view 提供了多种过渡动画类型,你可以通过 transitionType 参数来选择不同的动画效果。以下是一些常见的过渡动画类型:

  • TransitionType.slideLeft: 从右向左滑动
  • TransitionType.slideRight: 从左向右滑动
  • TransitionType.slideUp: 从下向上滑动
  • TransitionType.slideDown: 从上向下滑动
  • TransitionType.fade: 淡入淡出
  • TransitionType.scale: 缩放效果

自定义过渡动画

如果你想要自定义过渡动画,可以通过 TransitRoutetransitionBuilder 参数来实现。以下是一个自定义过渡动画的示例:

Navigator.push(
  context,
  TransitRoute(
    builder: (context) => SecondPage(),
    transitionBuilder: (context, animation, secondaryAnimation, child) {
      return ScaleTransition(
        scale: Tween<double>(begin: 0.0, end: 1.0).animate(
          CurvedAnimation(
            parent: animation,
            curve: Curves.easeInOut,
          ),
        ),
        child: child,
      );
    },
  ),
);
回到顶部