探索 Flutter 中的 NavigationRail:使用详解

1. 介绍

在 Flutter 中,NavigationRail 是一个垂直的导航栏组件,用于在应用程序中提供导航功能。它通常用于更大屏幕空间的设备,如平板电脑和桌面应用程序。NavigationRail 提供了一种直观的方式来浏览应用程序的不同部分,并允许用户轻松地切换页面或执行导航操作。

作用和特点:

  • 导航功能: NavigationRail 允许用户直观地导航应用程序的不同部分。通过点击导航栏中的选项,用户可以快速地切换到不同的页面或执行其他导航操作。

  • 垂直布局: NavigationRail 的垂直布局使其在平板电脑和桌面应用程序中尤其有用。在这些设备上,垂直导航栏可以更有效地利用屏幕空间,并提供更直观的用户体验。

  • 自定义外观: NavigationRail 允许开发人员根据应用程序的设计和品牌风格自定义导航栏的外观。您可以自定义背景颜色、选中项的颜色、图标和标签等。

  • 响应式设计: NavigationRail 支持响应式设计,可以适应不同尺寸和方向的屏幕。这使得它成为构建适用于多种设备和屏幕尺寸的应用程序的理想选择。

  • 高级功能: NavigationRail 提供了一些高级功能,如灵活的标签配置、自定义导航栏元素以及与页面切换组件的无缝集成,使开发人员能够创建功能丰富且易于使用的导航体验。

在下文中,我们将深入探讨 NavigationRail 的使用方法、最佳实践以及在实际应用中的应用场景,帮助您更好地利用这个强大的导航组件来构建出色的 Flutter 应用程序。

在这里插入图片描述

2. 安装和设置

在 Flutter 项目中使用 NavigationRail 非常简单,您只需按照以下步骤进行安装和设置即可:

  1. 添加依赖项
    在您的 Flutter 项目的 pubspec.yaml 文件中添加 flutter/material.dart 包。NavigationRail 是 Flutter SDK 的一部分,因此无需额外添加依赖项。
dependencies:flutter:sdk: flutter
  1. 导入包
    在您的 Dart 文件中导入 material.dart 包,以便使用 NavigationRail 组件。
import 'package:flutter/material.dart';
  1. 使用 NavigationRail
    在您的应用程序中使用 NavigationRail 组件来创建垂直导航栏。
class MyHomePage extends StatefulWidget {_MyHomePageState createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Navigation Rail Demo'),),body: Row(children: <Widget>[NavigationRail(// 导航栏的配置属性// 例如 selectedIndex、onDestinationSelected 等// 可根据需要进行设置),// 页面内容组件],),);}
}

通过以上步骤,您已经成功地将 NavigationRail 集成到您的 Flutter 项目中了。接下来,您可以根据需要对导航栏进行配置,例如设置选中项的索引、定义导航栏中的目标以及处理目标选中事件等。

3. 基本用法

NavigationRail 是 Flutter 中用于创建垂直导航栏的组件,它提供了一种直观的方式来导航应用程序的不同部分。以下是如何创建简单的 NavigationRail,并解释其关键属性的基本用法:

class MyHomePage extends StatefulWidget {_MyHomePageState createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {int _selectedIndex = 0; // 用于跟踪选中项的索引Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Navigation Rail Demo'),),body: Row(children: <Widget>[NavigationRail(selectedIndex: _selectedIndex, // 设置选中项的索引onDestinationSelected: (int index) {setState(() {_selectedIndex = index; // 处理目标选中事件});},labelType: NavigationRailLabelType.all, // 显示所有标签destinations: [NavigationRailDestination(icon: Icon(Icons.home), // 导航栏项的图标label: Text('Home'), // 导航栏项的标签),NavigationRailDestination(icon: Icon(Icons.person),label: Text('Profile'),),// 添加其他导航栏项],),// 页面内容组件Expanded(child: Center(child: _getPage(_selectedIndex), // 根据选中项显示不同的页面内容),),],),);}Widget _getPage(int index) {switch (index) {case 0:return Center(child: Text('Home Page'));case 1:return Center(child: Text('Profile Page'));// 添加其他页面default:return Center(child: Text('Page not found'));}}
}

在上面的示例中,我们创建了一个简单的 NavigationRail,其中包含两个导航栏项:Home 和 Profile。通过设置 selectedIndex 属性来跟踪选中项的索引,并通过 onDestinationSelected 回调函数来处理选中项的变化。每个导航栏项使用 NavigationRailDestination 类来定义图标和标签。最后,根据选中的索引,显示不同的页面内容。

使用 labelType 属性可以定义导航栏标签的显示方式。在本例中,我们设置为 NavigationRailLabelType.all,表示显示所有标签,包括未选中的标签。

通过这个基本用法示例,您可以快速开始使用 NavigationRail 来构建具有导航功能的 Flutter 应用程序。根据您的需求,您可以添加更多的导航栏项,并根据需要自定义导航栏的外观和行为。

4. 自定义导航栏

NavigationRail 提供了许多自定义选项,使您能够根据应用程序的设计和品牌风格定制导航栏的外观。下面是如何自定义 NavigationRail 的外观以及如何提供自定义图标和标签的方法:

4.1 自定义导航栏外观

您可以通过以下方法来自定义 NavigationRail 的外观:

  • 背景色: 使用 backgroundColor 属性设置导航栏的背景色。
NavigationRail(backgroundColor: Colors.blueGrey, // 设置导航栏的背景色// 其他配置属性...
)
  • 选中项颜色: 使用 selectedIconTheme 属性设置选中项的图标主题,以及 selectedLabelTextStyle 属性设置选中项的标签文本样式。
NavigationRail(selectedIconTheme: IconThemeData(color: Colors.red), // 设置选中项的图标颜色selectedLabelTextStyle: TextStyle(color: Colors.red), // 设置选中项的标签文本颜色// 其他配置属性...
)
  • 未选中项颜色: 使用 unselectedIconTheme 属性设置未选中项的图标主题,以及 unselectedLabelTextStyle 属性设置未选中项的标签文本样式。
NavigationRail(unselectedIconTheme: IconThemeData(color: Colors.grey), // 设置未选中项的图标颜色unselectedLabelTextStyle: TextStyle(color: Colors.grey), // 设置未选中项的标签文本颜色// 其他配置属性...
)

4.2 自定义图标和标签

您可以通过以下方法自定义导航栏的图标和标签:

  • 自定义图标: 使用任何您喜欢的图标,例如 Flutter 自带的图标或自定义的图标。
NavigationRailDestination(icon: Icon(Icons.home), // 使用 Flutter 自带的图标// 或者icon: Icon(IconData(0xe8e6, fontFamily: 'MyCustomIcons'), // 使用自定义的图标),// 其他属性...
)
  • 自定义标签: 使用 Text 组件自定义导航栏项的标签。
NavigationRailDestination(label: Text('Home'), // 自定义标签文本// 其他属性...
)

通过使用上述自定义选项,您可以轻松地根据应用程序的需求和设计风格定制 NavigationRail 的外观,并提供具有个性化标签和图标的导航栏。这样,您可以确保导航栏与应用程序的整体风格保持一致,并提供出色的用户体验。

5. 与页面切换结合

NavigationRail 通常与页面切换组件结合使用,例如 PageViewIndexedStack,以实现根据选定的导航栏项切换不同的页面内容。以下是如何将 NavigationRail 与 PageView 结合使用的解释和演示:

5.1 解释如何结合页面切换组件

  1. 使用 PageView PageView 组件允许用户在页面之间滑动,因此非常适合与 NavigationRail 结合使用。您可以在 PageView 中放置不同的页面,并根据导航栏的选定项切换页面。

  2. 使用 IndexedStack IndexedStack 组件允许同时显示多个子组件,并通过索引来确定哪个子组件应该可见。您可以将不同的页面放置在 IndexedStack 中,并根据导航栏的选定项设置索引来显示相应的页面。

5.2 演示如何根据选定的导航栏项切换页面内容

下面是一个简单的示例,演示如何将 NavigationRail 与 PageView 结合使用,并根据选定的导航栏项切换页面内容:

class MyHomePage extends StatefulWidget {_MyHomePageState createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {int _selectedIndex = 0;PageController _pageController = PageController(); // 页面控制器Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Navigation Rail Demo'),),body: Row(children: <Widget>[NavigationRail(selectedIndex: _selectedIndex,onDestinationSelected: (int index) {setState(() {_selectedIndex = index;_pageController.jumpToPage(index); // 根据选定的导航栏项切换页面});},// 导航栏配置属性...),Expanded(child: PageView(controller: _pageController,children: [Center(child: Text('Home Page')),Center(child: Text('Profile Page')),// 添加其他页面],),),],),);}
}

在上面的示例中,我们创建了一个包含 NavigationRail 和 PageView 的界面。当用户点击导航栏中的选项时,onDestinationSelected 回调函数会被调用,并根据选定的索引来更新 _selectedIndex。然后,我们使用页面控制器 _pageController 来将 PageView 的当前页设置为选定的索引,从而切换到相应的页面。

通过这种方法,您可以实现根据选定的导航栏项切换不同的页面内容,为用户提供直观的导航体验。您还可以根据需要将其他页面添加到 PageView 中,以扩展应用程序的功能。

6. 响应式设计

在设计 Flutter 应用程序时,响应式设计是至关重要的,特别是在考虑到不同设备尺寸和方向的情况下。NavigationRail 作为一种用于导航的重要组件,需要在各种屏幕尺寸上进行适应。以下是在不同的屏幕尺寸上响应式地使用 NavigationRail 的一些最佳实践:

6.1 适应平板电脑、桌面和移动设备的最佳实践

  1. 使用媒体查询: 使用 MediaQuery 来检测当前设备的屏幕尺寸和方向,并相应地调整 NavigationRail 的布局和样式。
Widget build(BuildContext context) {final screenWidth = MediaQuery.of(context).size.width;final isDesktop = screenWidth > 600; // 适用于平板电脑和桌面return Scaffold(body: Row(children: <Widget>[// 在大屏幕上显示 NavigationRailif (isDesktop)NavigationRail(// 导航栏属性...),// 页面内容组件Expanded(child: Center(// 页面内容...),),],),);
}
  1. 使用 Flexible 和 Expanded: 在 Row 布局中,将 NavigationRail 放置在 Flexible 组件中,并将页面内容放置在 Expanded 组件中,以确保页面内容可以占据剩余的空间。
Widget build(BuildContext context) {return Scaffold(body: Row(children: <Widget>[Flexible(flex: 1,child: NavigationRail(// 导航栏属性...),),Expanded(flex: 3,child: Center(// 页面内容...),),],),);
}
  1. 考虑横向布局: 对于横向屏幕方向的设备,如平板电脑和桌面,可以考虑将 NavigationRail 放置在页面的左侧或右侧,而不是顶部。
Widget build(BuildContext context) {final isLandscape = MediaQuery.of(context).orientation == Orientation.landscape;return Scaffold(body: isLandscape? Row(children: <Widget>[// 在横向布局中,根据需求放置 NavigationRailNavigationRail(// 导航栏属性...),// 页面内容...],): Column(children: <Widget>[// 在竖向布局中,将 NavigationRail 放置在顶部NavigationRail(// 导航栏属性...),// 页面内容...],),);
}

通过以上最佳实践,您可以确保在不同的屏幕尺寸和方向下,NavigationRail 能够适应设备的布局,并提供一致的用户体验。根据您的应用程序需求和设计风格,可以灵活地调整布局和样式。

7. 高级功能

NavigationRail 不仅提供了基本的导航功能,还提供了一些高级功能,以增强用户体验并扩展导航栏的功能。以下是一些高级功能的探索和演示:

7.1 labelType 属性

labelType 属性用于定义导航栏标签的显示方式。NavigationRail 提供了三种 NavigationRailLabelType 枚举类型:

  • NavigationRailLabelType.none: 不显示标签。
  • NavigationRailLabelType.selected: 只在选中的导航栏项上显示标签。
  • NavigationRailLabelType.all: 在所有导航栏项上都显示标签。
NavigationRail(labelType: NavigationRailLabelType.selected, // 只在选中项上显示标签// 其他配置属性...
)

7.2 leading 和 trailing 属性

leadingtrailing 属性允许在导航栏中添加额外的元素,可以是图标、按钮或其他小部件。通常,leading 用于在导航栏的顶部添加元素,而 trailing 则用于在底部添加元素。

NavigationRail(leading: Icon(Icons.menu), // 在导航栏顶部添加图标trailing: Icon(Icons.search), // 在导航栏底部添加图标// 其他配置属性...
)

7.3 实现导航栏中的额外元素

您可以使用 leadingtrailing 属性来实现在导航栏中添加额外的元素,例如标签、按钮或其他自定义小部件。以下是一个示例,演示如何在导航栏的顶部添加一个按钮,并在底部添加一个文本标签:

NavigationRail(leading: IconButton(icon: Icon(Icons.menu),onPressed: () {// 处理导航栏顶部按钮点击事件},),trailing: Text('Settings'), // 在导航栏底部添加文本标签// 其他配置属性...
)

通过使用高级功能,您可以增强导航栏的功能和外观,为用户提供更丰富的导航体验。您可以根据应用程序的需求和设计风格,自由地定制导航栏,并添加所需的额外元素。

8. 案例研究

NavigationRail 是一个灵活的导航组件,在许多实际应用中都可以发挥重要作用。以下是一个使用 NavigationRail 的案例研究,展示其在实际应用中的应用场景:

案例:健康监测应用

背景: 健康监测应用是一种用于跟踪用户健康数据和提供个性化建议的应用程序。用户可以查看各种健康指标,如步数、心率、睡眠质量等,并根据这些数据了解自己的健康状况。

NavigationRail 的应用: 在健康监测应用中,NavigationRail 可以用作主要的导航方式,让用户轻松地访问各个健康数据模块。以下是 NavigationRail 在健康监测应用中的一些应用场景:

  1. 导航栏项: NavigationRail 的每个导航栏项可以代表一个健康数据模块,如步数、心率、睡眠等。用户可以通过点击导航栏项来切换到相应的健康数据页面。

  2. 自定义图标和标签: 每个导航栏项可以使用自定义的图标和标签,以便用户更容易识别和理解各个健康数据模块。

  3. 页面切换: NavigationRail 可以与 PageViewIndexedStack 结合使用,以实现根据选定的导航栏项切换页面内容。用户可以通过滑动页面或点击导航栏项来浏览各个健康数据页面。

  4. 响应式设计: 应用程序可以根据不同设备的屏幕尺寸和方向来调整 NavigationRail 的布局和样式,以确保在各种设备上提供一致的用户体验。

总结: 在健康监测应用中,NavigationRail 提供了一个直观的导航方式,让用户可以轻松地访问和浏览各个健康数据模块。通过其灵活的配置选项和响应式设计,NavigationRail 可以有效地增强健康监测应用的导航体验,提升用户满意度和应用的实用性。

9. 总结

NavigationRail 是 Flutter 中用于创建垂直导航栏的组件,具有以下主要优势和用法:

  • 直观的导航体验: NavigationRail 提供了直观的导航方式,让用户可以轻松地切换应用程序的不同部分或执行导航操作。

  • 灵活的自定义选项: NavigationRail 提供了丰富的自定义选项,包括背景色、选中项的颜色、标签类型等,使开发人员可以根据应用程序的设计和品牌风格定制导航栏的外观。

  • 与页面切换组件的无缝集成: NavigationRail 可以与页面切换组件(如 PageViewIndexedStack)结合使用,以实现根据选定的导航栏项切换不同的页面内容,从而提供更丰富的用户体验。

  • 响应式设计支持: NavigationRail 支持响应式设计,可以根据不同设备的屏幕尺寸和方向调整布局和样式,以确保在各种设备上提供一致的用户体验。

  • 提高用户满意度: NavigationRail 可以增强应用程序的导航体验,提高用户的满意度和使用体验,从而增强应用的实用性和吸引力。

进一步学习和探索的资源链接

如果您想进一步学习和探索 NavigationRail 的更多信息和用法,以下是一些官方文档和资源链接:

  1. NavigationRail 类文档:Flutter 官方文档中关于 NavigationRail 类的详细说明,包括属性、方法和示例。

  2. Flutter 导航和路由文档:Flutter 官方文档中关于导航和路由的详细指南,可帮助您更好地理解 Flutter 中导航的概念和实现方式。

  3. Flutter Cookbook 中的 NavigationRail 示例:Flutter Cookbook 中关于 NavigationRail 的示例,提供了一些常见的用法和最佳实践。

  4. Flutter 示例应用:Flutter 提供的示例应用程序,包含了许多不同组件的使用示例,您可以从中学习和探索 NavigationRail 的用法。

通过阅读以上资源,并尝试在您的应用程序中应用 NavigationRail,您将更好地掌握 NavigationRail 的用法和技巧,从而构建出色的 Flutter 应用程序。

10. 附录

在这个附录中,我们将提供一些额外的信息,包括常见问题解答和最佳实践建议,帮助您更好地理解和使用 NavigationRail。

常见问题解答

Q: NavigationRail 如何处理超出屏幕宽度的导航项?
A: 当导航项超出屏幕宽度时,NavigationRail 会自动在侧边添加一个滚动条,用户可以通过滚动来查看所有导航项。

Q: 我应该何时使用 NavigationRail?
A: NavigationRail 适用于需要在应用程序中提供导航功能的情况,特别是对于平板电脑和桌面应用程序。它提供了一种直观的方式来浏览不同部分或执行导航操作。

最佳实践建议

  • 保持导航栏简洁明了: 尽量避免在 NavigationRail 中放置过多的导航项,保持导航栏的简洁和清晰,以提供更好的用户体验。

  • 注意响应式设计: 在设计 NavigationRail 时,请务必考虑不同设备和屏幕尺寸的响应式布局,以确保在各种设备上都能提供良好的用户体验。

  • 注意可访问性: 确保 NavigationRail 中的导航项和其他元素都易于访问,尤其是对于视觉障碍用户。考虑使用适当的语义标签和颜色对比度。

  • 测试与迭代: 在发布应用程序之前,进行全面的测试,并根据用户反馈进行必要的迭代和改进,以确保 NavigationRail 的功能和性能符合预期。

通过遵循这些最佳实践建议,您可以更好地利用 NavigationRail,为您的应用程序提供出色的导航体验,并确保用户满意度和应用的实用性。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/766796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyStructureFactor:隧道电离率中分子结构因子的 Python 代码

PyStructureFactor&#xff1a;隧道电离率中分子结构因子的 Python 代码 隧道电离是强场和阿秒科学的核心。在本文中&#xff0c;我们提出了PyStructureFactor——一个通用的Python代码&#xff0c;用于计算强激光场下常见分子的隧道电离率的结构因子。数值实现基于积分表示…

004——内存映射(基于鸿蒙和I.MAX6ULL)

目录 一、 ARM架构内存映射模型 1.1 页表项 1.2 一级页表映射过程 1.3 二级页表映射过程 1.4 cache 和 buffer 二、 鸿蒙内存映射代码学习 三、 为板子编写内存映射代码 3.1 内存地址范围 3.2 设备地址范围 一、 ARM架构内存映射模型 &#xff08;以前我以为页表机制…

使用插件将swagger文档转html或pdf

github上有maven开源插件swagger2markup将swagger文档转为.adoc格式的文档&#xff0c;另外一个maven开源插件asciidoctorj-pdf则可以将.adoc格式的文档转为html和pdf。由于GitHub访问不稳定&#xff0c;在gitee上有镜像项目。所以我就贴gitee上的项目地址了。 实现从swagger文…

局域网内的手机、平板、电脑的文件共享

在日常工作生活中&#xff0c;经常需要将文件在手机、平板、电脑间传输&#xff0c;以下介绍三种较为便捷的方法&#xff1a; 1.LocalSend 该软件是免费开源的&#xff0c;可以在局域网内的任意手机、平板、电脑间传递文件&#xff0c;并且任意一方都可以作为“发送方”和“接…

MapReduce学习问题记录

1、如何跳过对某行数据的处理 第一行数据是字段名不需要处理&#xff0c;我们知道第一行偏移量是0&#xff08;行记录的时候是从数组首地址开始&#xff0c;到了行标识符进行一次计数&#xff0c;这个计数就是行偏移量&#xff0c;从0开始&#xff09;&#xff0c;我们根据偏移…

线程池的7大参数

线程池的7大参数 一、 corePoolSize 线程池核心线程大小 核心线程永远不会销毁&#xff0c;即使他们处于空闲状态&#xff0c;除非设置了allowCoreThreadTimeOut。任务提交到线程池后&#xff0c;首先会检查当前线程数是否达到了corePoolSize&#xff0c;如果没有达到的话&…

【绘图案例-奇偶填充规则 Objective-C语言】

一、接下来,我们来学习奇偶填充规则 1.就是说,你在填充的时候,实际上,是有一些规则的, 奇偶填充规则:even-odd rule, even:偶数,odd:奇数 2.把之前的copy代码,复制粘题一份,名字改成“07-奇偶填充规则”, 把ppt里的代码复制粘贴过来, 我们来看一下这段儿代码,…

CSS(一)

一、CSS 简介 1.1 HTML 的局限性 说起 HTML&#xff0c;这其实是个非常单纯的家伙&#xff0c;他只关注内容的语义。比如 <h1> 表明这是一个大标题&#xff0c;<p> 表明这是一个段落&#xff0c;<img> 表明这儿有一个图片&#xff0c;<a> 表示此处有链…

每日一题 --- 设计链表[力扣][Go]

设计链表 题目&#xff1a;707. 设计链表 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。 如果是双向链表&#xff0c;则…

pytest之统一接口请求封装

pytest之统一接口请求封装 pytest的requests_util.pyrequests_util.py 接口自动化测试框架的封装yaml文件如何实现接口关联封装yaml文件如何实现动态参数的处理yaml文件如何实现文件上传有参数化时候&#xff0c;怎么实现断言yaml的数据量大怎么处理接口自动化框架的扩展&#…

FFmepg--AVFilter过滤器使用以及yuv视频裁剪

文章目录 AVFilter 流程&#xff1a;api核心代码变量yuv视频裁剪 AVFilter 流程&#xff1a; ⾸先使⽤split滤波器将input流分成两路流&#xff08;main和tmp&#xff09;&#xff0c;然后分别对两路流进⾏处理。对于tmp流&#xff0c;先经过crop滤波器进⾏裁剪处理&#xff0c…

Kotlin零基础入门到进阶实战

教程介绍 Kotlin现在是Google官方认定Android一级开发语言&#xff0c;与Java100%互通&#xff0c;并具备诸多Java尚不支持的新特性&#xff0c;每个Android程序员必备的Kotlin课程&#xff0c;每个Java程序员都需要了解的Kotlin&#xff0c;掌握kotlin可以开发Web前端、Web后…

主干网络篇 | YOLOv8更换主干网络之GhostNet

前言:Hello大家好,我是小哥谈。GhostNet是2019年由华为诺亚方舟实验室发布的轻量级网络,速度和MobileNetV3相似,但是识别的准确率比MobileNetV3高,在ImageNet ILSVRC2012分类数据集的达到了75.7%的top-1精度。该论文提除了Ghost模块,通过廉价操作生成更多的特征图。基于一…

是德科技keysight DSOX3024T示波器

181/2461/8938产品概述&#xff1a; DSOX3024T 示波器 要特性与技术指标 使用电容触摸屏进行简洁的触控操作&#xff1a; •提高调试效率 •触控设计可以简化文档记录 •使用起来就像您喜欢的智能手机或平板电脑一样简单 使用 MegaZoom IV 技术揭示偶发异常&#xff1a; •超快…

思通舆情 是一款开源免费的舆情系统 介绍

思通舆情 是一款开源免费的舆情系统。 支持本地化部署&#xff0c;支持在线体验。 支持对海量舆情数据分析和挖掘。 无论你是使用者还是共同完善的开发者&#xff0c;欢迎 pull request 或者 留言对我们提出建议。 您的支持和参与就是我们坚持开源的动力&#xff01;请 sta…

申请双软认证需要哪些材料?软件功能测试报告怎么获取?

“双软认证”是指软件产品评估和软件企业评估&#xff0c;其中需要软件测试报告。 企业申请双软认证除了获得软件企业和软件产品的认证资质&#xff0c;同时也是对企业知识产权的一种保护方式&#xff0c;更可以让企业享受国家提供给软件行业的税收优惠政策。 那么&#xff0c;…

6-191 拓扑排序

一项工程由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其他子任务后才能执行。例如,下图表示了一项工程若干子任务之间的先后关系。 编写函数输出所有子任务的拓扑序列。 函数接口定义: Status Push_SeqStack(SeqStack &s, ElemType x)//入栈,x入到…

框架结构模态分析/动力时程分析Matlab有限元编程 【Matlab源码+PPT讲义】|梁单元|地震时程动画|结果后处理|地震弹性时程分析| 隐式动力学

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

基于springboot+vue的旅游网站

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

JavaScript 权威指南第七版(GPT 重译)(六)

第十五章&#xff1a;JavaScript 在 Web 浏览器中 JavaScript 语言是在 1994 年创建的&#xff0c;旨在使 Web 浏览器显示的文档具有动态行为。自那时以来&#xff0c;该语言已经发生了显著的演变&#xff0c;与此同时&#xff0c;Web 平台的范围和功能也迅速增长。今天&#…