- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个 flutter 应用程序,我打算在其中显示 map 上的固定优惠。在这张 map 上,将是一个可滚动的 View ,它将以“文本”形式显示报价(基本上是固定在 map 上的报价列表)。
我还希望 ScrollView 在开始时只覆盖大约一半的屏幕,但它可以向上滚动以覆盖整个 map View 。这就是为什么我有填充。
一切都按预期工作,但我的 ScrollView 阻止我移动和缩放 map ?
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: globals.themeColor4,
title: Text('MY APP'),
),
body: Stack(
children: <Widget>[
Container(
child: _mapInitialized
? _map
: Container(
child: Center(
child: Text("Loading.."),
),
),
),
SingleChildScrollView(
padding: EdgeInsets.fromLTRB(0, 300, 0, 0),
child: Container(
color: Colors.white,
child: Column(children: _offers),
),)
],
));
}
有什么想法吗?
图 1:下面建议的解决方案的结果:
图 2:这就是我想要的, View 向上滑动并隐藏 map :
最佳答案
诀窍是让 Map 实际上位于 Stack 的顶部,以便它始终对手势使用react,并在 ScrollView 滚动时更改布局,以便在视觉上 ScrollView 位于 Map 的顶部。试试下面的代码:
在小部件的状态下初始化一个ScrollController
:
final ScrollController scrollController = ScrollController();
在initState
中为scrollController
添加一个监听器:
scrollController.addListener(() {
setState(() {}); // triggers rebuild with the new Container height
});
然后构建
:
return Stack(
children: <Widget>[
SingleChildScrollView( // this is your list
controller: scrollController,
padding: const EdgeInsets.only(top: 300),
child: Column(
children: List.generate(50, (int index) => Container( // your list items
height: 50,
color: index % 2 == 0 ? Colors.orange : Colors.green,
)),
),
),
GestureDetector(
onTap: () {
print("TAPPED");
},
child: Container(
height: max(0, 300.0 - (scrollController.hasClients ? scrollController.offset : 0)),
child: Wrap(
children: <Widget>[
Container(
height: 300, // fixed height for the Map
child: Column( // this is where your Map would be
children: List.generate(6, (int index) => Container(
height: 50,
color: index % 2 == 0 ? Colors.blue : Colors.purple,
)),
),
),
],
),
),
),
],
);
当您滚动 ScrollView
时,Container
从其初始高度缩小到 0,这在视觉上与在顶部滚动的 ScrollView
相同的 map 。 math
包的 max
函数用于防止 Container
的高度低于 0。
Wrap
小部件可防止其子项溢出,尽管其高度固定为 300,父级 Container
的高度可能小于 300。
(是的,我知道我最初建议使用 Slivers 的 CustomScrollView,但这种方法实际上看起来更容易和更快 - 也就是说我不确定每次调用 setState
的性能影响 ScrollView
已滚动 - 可能需要在低端设备上进行测试)
关于flutter - Stack 中的手势被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56803228/
在编写代码时,当我编写 struct *Stack stack 时,代码无法工作,而当我像 struct Stack* stack 那样编写代码时,代码可以工作有人告诉我这两个代码之间的区别吗? 最佳
我的教授要我绘制堆栈吗?他想让我付诸行动吗?我觉得自己很愚蠢,但这不像任何人告诉我的那样!感谢您的帮助。 哇,你们真快。已经谢谢你了。完整的问题是:考虑两个堆栈,每个堆栈的大小为 n(即,每个堆栈最多
是new Stack[N]相当于new Stack[N]对于通用数据类型 Stack ? 编辑:虽然我知道最好避免混合泛型类型和数组,并且存在更强大的解决方案,但我的查询仍然存在:被广泛认可的教科书,
我正在尝试使用堆栈的 printf() 打印 stack.top() 的返回值,但它给出的格式不匹配。代码如下: int main(){ stack cards; char *ch1
我正在尝试做一个 dapp 项目。 我有一个堆栈太深的错误,但我不知道如何解决这个问题。 CompilerError: Stack too deep, try removing local varia
在哪里stack haddock (或 stack build --haddock )放置它生成的文档? 最佳答案 这取决于为“属于”生成黑线鳕的包的位置。 “本地”包的 Haddocks 是堆栈项目
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
基本上,我有 2 个文件(.adb 和 .ads)。我对 Ada 以及如何编译 2 个文件完全陌生。该程序是一个基本的堆栈实现。编译 .adb 文件时出现此编译错误。 $ gcc -c test_ad
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
您好,我正在尝试在微服务架构中使用 ELK 堆栈,其中有许多服务分布在许多服务器上。 现在我已经配置了 Kibana 和 ElasticSearch。现在我的疑问是我必须在哪里安装 Logstash。
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
我正在学习 Haskell,但遇到了我没想到的异常“堆栈溢出”。 代码相当简单: type Reals = Double prod :: Reals -> Reals -> Reals prod a
在我的 PC(最新的 JDK 和编译器版本)上,我的程序运行得非常顺利。但在我教授的计算机上,她说她遇到了两个错误 1) Stack myStack= new Stack() 类型的非法开始 2) 非
当我尝试在调用跟踪后执行 ./stack.sh 时,我收到以下错误: `[Call Trace] ./stack.sh:217:source /home/work/devstack/stackrc
1 上下文 我参与了一个涉及大量 C 位和 FFI 的 Haskell 项目。所以我发现自己经常运行和重新运行命令,比如 $ stack build $ stack build --force-dir
关于 SO 上的堆栈的问题,终于!我的一生都让我走到了这一步。 所以我需要将我制作的一些相当大的自定义数据结构合并到一个堆栈中。我决定编写一个仅包含一个整数值的最小堆栈结构。这里是 - MODULE
我只是想知道为什么在括号之间嵌入表达式时会得到两个不同的成员列表,例如gl-stack。看起来,如果没有括号,表达式就会被完全求值,并且结果会立即传递到下一个管道组件。但通过括号,集合中的单个对象将被
是否可以保存Stack>在onSaveInstanceState . 是否可以通过另一种方式保存某些特定数据来管理 Activity 状态? 最佳答案 您无法将 View 保存到 bundle 中。无
这个问题已经有答案了: Why don't Java Generics support primitive types? (5 个回答) 已关闭 9 年前。 为什么我不能使用Stack ? 除了拳击之
基于数组的实现级别 #include "stack.h" void creat_stack(Stack *s) { s->Top = 0; } int isFull(Stack s) {
我是一名优秀的程序员,十分优秀!