小编AnE*_*Bug的帖子

我可以在导航组件中使用多个NavHostFragments吗?

如果您难以理解以下段落,请查看我制作的流程图.

我目前正在制作一个有3个顶级目的地的笔记应用程序.其中一个顶级目标(NotesList)显示用户创建的注释列表.NotesList有一个过滤器按钮,它会打开一个带有FilterMenu目标的底部模态表.FilterMenu有一个搜索按钮,点击后,用一个搜索目的地替换工作表的内容,一个名为tags的按钮,点击后,用一个包含与所有注释相关的标签列表的片段替换工作表的内容(TagList)目的地).

在此输入图像描述

蓝色的一切都是顶级目的地.紫色的所有东西都存在于模态表中.

FilterMenu,Search和TagList显示在模式表中.这意味着NotesList 包含这些片段,而不是由它们替换.它们存在于小于NotesList的屏幕区域中.如果我使用导航,片段将互相替换.

我可以使用两个NavHosts吗?一个用于顶级目的地,另一个用于模态表中的东西?如果是这样,我将如何实现它?如果没有,在这种情况下建议做什么?

android android-architecture-components android-architecture-navigation

17
推荐指数
1
解决办法
700
查看次数

如何将片段和子片段与导航组件一起使用?

我正在使用导航组件和片段作为我的个人目的地制作应用程序。我想知道如何实现这样的导航流程:

在此处输入图片说明

在Destination 2中,有一个菜单按钮,可以打开一个小菜单(不覆盖整个屏幕)。在菜单(Menu 1)里面,还有其他按钮点击,第二个菜单(Menu 2)取代了第一个。按后退按钮应该按如下方式移动我:

目的地 2(b) -> 目的地 2(a) -> 目的地 2 -> 目的地 1

我如何使用导航组件来实现这一点?为了清楚起见,菜单显示在目标 2 的顶部。因此,菜单和目标 2 中的内容都应该可见。

android android-architecture-components android-architecture-navigation

5
推荐指数
1
解决办法
684
查看次数

如何在非开始目的地的后按退出应用程序?

假设我有一个与此类似的导航图:

---------      ---------
| Home  | ---->| Other |
---------      ---------
    |
    |
    V
---------
| Login |
---------
Run Code Online (Sandbox Code Playgroud)

如果用户没有登录,我必须在他继续之前显示登录屏幕。根据文档,我检查用户是否在HomeFragment. 如果他不是,我打开LoginFragment. 到现在为止还挺好。

但是如果用户按回LoginFragment,我希望应用程序退出。但由于LoginFragment不是开始目的地,它会简单地打开HomeFragment,然后LoginFragment再次打开。

目前,我通过重写退出应用程序onBackPressed()在主机Activityfinish()Activity如果当前目的地LoginFragment

但这感觉很hackish。我想这一定是一个非常常见的导航场景。那么,是否有任何“惯用”的方式来做到这一点?

android android-architecture-components android-architecture-navigation

5
推荐指数
1
解决办法
1547
查看次数

Dart 2.1.0 智能转换使用“is”不起作用

我正在使用 Bloc 模式并使用以下代码来定义我的状态:

import 'package:meta/meta.dart'

@immutable
abstract class UiState {}

class Loading extends UiState {}

class Success extends UiState {
  Success(this.message);

  final String message;
}

class Failure extends UiState {}
Run Code Online (Sandbox Code Playgroud)

我尝试使用 aUiState如下:

class MyWidget extends StatelessWidget {
  const MyWidget({
    Key key,
    @required this.uiState,
  }) : super(key: key);

  final UiState uiState;

  Widget build(BuildContext context) {
    if (uiState is Success) {
      return Text(uiState.message);
    }
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

但是 VSCode 告诉我“没有为类 'UiState' 定义 getter 'message'”。

我以前使用过智能演员,他们确实有效。但在这种情况下,我无法弄清楚为什么它不起作用。

我的 pubspec 有以下内容:

environment:
  sdk: …
Run Code Online (Sandbox Code Playgroud)

dart flutter

3
推荐指数
1
解决办法
1135
查看次数