从 Navigator 到 MaterialApp 的 routeSettings flutter
全部标签 我试图在FlutterNavigatorWidget中强制执行水平转换。Navigator使用从一个屏幕到下一个屏幕的平台默认转换。在iOS中,过渡是从右到左。从左到右弹出。在Android中它是从下到上。我相信解决方案是使用PageRouteBuilder,但没有成功。我用导航器小部件标记了方法,我想用PageRouteBuilder修改它以获得所需的水平过渡。代码片段2,是我一直在尝试但没有成功的转换代码。此代码用作默认转换。import'package:flutter/material.dart';voidmain()=>runApp(newMyApp());classMyApp
我想为第一个屏幕设置动画,当用户打开带有淡入淡出效果的应用程序时会显示该屏幕。我尝试将我的屏幕包装到AnimatedOpacity小部件中,但没有任何效果。MaterialApp{home:FutureBuilder>(future:api.fetchProfile(),builder:(context,snapshot){returnsnapshot.data!=null?AnimatedOpacity(child:FirstScreen(),duration:Duration(milliseconds:500),opacity:1.0,):Container();}),}有人做过吗
在我的应用程序中,我有一个始终可见的底栏。我在thissite中找到在拥有多个导航器的同时将选项卡保存在内存中的一个好方法是使用Offscreen。但是,当我将Navigator放在Offscreen中时,它的所有内容都无法获得焦点。我做了一个非常简单的例子来重现我所说的:voidmain()async{runApp(MyApp());}classMyAppextendsStatelessWidget{MyApp({Keykey,}):super(key:key);@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(t
我在应用程序的主页/根页面中有一个流生成器。每当我在别处进行页面导航时都会触发此流构建器,这与流本身无关。我的理解,根据here和here,当页面在导航器中弹出/推送时,它会触发应用程序的重建,因此流生成器会重新附加并触发。然而,这似乎效率低下,那么有没有办法阻止流生成器在弹出/推送页面时触发?此外,根据日志,当我推送页面时,首先构建并显示页面,然后触发流构建器。然而,流生成器的小部件/页面根本不显示,即使日志/调试器清楚地显示流生成器的小部件已返回。它去哪儿了?它在Flutter框架中是如何工作的?下面是完整的代码和日志。该代码使用Firebase身份验证作为流生成器。代码:impo
我正在使用BLoC,我需要从PageOne导航到PageTwo并能够使用后退按钮返回,我不知道这是否是处理此问题的正确方法。当函数_navigateToPage2被调用时,我也遇到了错误。ThecontextusedtopushorpoproutesfromtheNavigatormustbethatofawidgetthatisadescendantofaNavigatorwidget.classSimpleBlocDelegateextendsBlocDelegate{@overridevoidonTransition(Transitiontransition){print(tra
我想知道是否有一种使用Navigator调用的方法不允许用户向后导航并保持HeroWidget的动画完好无损?我在启动画面和登录屏幕之间有一个英雄小部件图像转换,但我想阻止用户从启动画面返回。Navigator.pushAndRemoveUntil和Navigator.pushReplacement都终止动画过渡动画。 最佳答案 我的解决方案主要是因为WillPopScope污染了另一个页面并阻止了Android上应该关闭应用程序的硬件按钮:FuturepushAndReplace(StringrouteName)async{fin
我有一个StatefulWidget,我想在命名路由中使用它。我必须按照https://flutter.dev/docs/cookbook/navigation/navigate-with-arguments中的建议传递一些我正在做的论点即Navigator.pushNamed(context,routeName,arguments:,);现在,我需要在状态的initState方法中访问这些参数,因为需要参数来订阅一些外部事件。如果我将args=ModalRoute.of(context).settings.arguments;调用放在initState中,我会得到一个运行时异常。20
在flutter中,我们可以将一个返回MaterialApp实例的无状态小部件传递给runApp()函数,如下所示:voidmain()=>runApp(newMyApp());classMyAppextendsStatelessWidget{@overrideWidgetbuild(BuildContextcontext){returnnewMaterialApp(...);}}或者我们可以将MaterialApp的实例直接传递给runApp()函数,如下所示:voidmain()=>runApp(newMaterialApp(...););这些方法有什么区别?谢谢。
下面类TestWidget中的build函数在执行导航代码时被调用两次。TestWidget在控制台上打印了两次。有谁知道为什么会这样?classTestWidgetextendsStatelessWidget{@overrideWidgetbuild(BuildContextcontext){print("TestWidget");returnnewScaffold(body:newText("TESTWIDGET"),);}}导航代码:Navigator.of(context).pushNamed(AppRoutes.fieldData);`路线定义:AppRoutes.field
当使用Navigator.push()将一个对象从一个类传递到另一个类时,即使该对象声明为非最终对象,也不会对其进行修改。主屏幕:创建一个对象(userBean)并传递给第一个屏幕第一个屏幕:显示相同的对象(userBean)值,并将相同的对象(userBean)再次传递到第二个屏幕。第二屏:尝试在第二屏修改相同的对象(userBean),并使用refreshData.then方法在第一屏打印相同的对象(userBean)。Main.dartimport'package:flutter/material.dart';import'package:flutter_app_poc1/fir