我创建了一个页面,其中包含一个列中的几个文本字段和按钮,该列包含在具有背景图像的容器中.而这个容器本身就是一个scrollview小部件的子代.
因此,当一个人点击其中一个字段时,他们的键盘会弹出(占据屏幕的一部分),这意味着一些按钮/字段在屏幕外,这是scrollview小部件用于其目的的地方.
这里的问题是我想限制滚动视图允许用户滚动的距离.
最低按钮下面有一些空白区域,我不希望用户能够一直滚动到那里.这也是让体验变得简单,并且不会让用户"过度滚动"超过他应该输入的字段.
但由于背景图像是滚动视图的一部分,因此视图将允许用户向下滚动到图像底部.我想限制这个.
作为后续工作,我试图弄清楚如何设置初始滚动位置.(因此,当单击某个字段时,滚动视图会向下滚动到第一个文本字段,因此所有字段都在视图中.用户无需向下滚动它们.但我不希望重新应用此滚动位置每当用户点击某个字段时,当然.)
这是相关的(如果我的任何代码看起来非常糟糕请说出来,我是一般的编程新手并接受任何改进的建议):
class LoginPageConstructor extends StatelessWidget {
@override
Widget build(BuildContext context) {
AssetImage loginBackgroundAsset =
new AssetImage("assets/loginscreen/backgroundrock.png");
// var _scrollController = new ScrollController(
// initialScrollOffset: 200.0,
// keepScrollOffset: true);
return new Scaffold(
body: new Container(
child: new ListView(key: new PageStorageKey("Divider 1"),
// controller: _scrollController,
children: <Widget>[
new Stack(children: <Widget>[
new Container(
constraints: new BoxConstraints.expand(height: 640.0),
decoration: new BoxDecoration(
image: new DecorationImage(
image: loginBackgroundAsset, fit: BoxFit.cover)),
child: new Column(
children: <Widget>[
new Divider(height: 300.0,),
new Center(child: …Run Code Online (Sandbox Code Playgroud) 我想在一个方法中有一个小吃店,这样我就可以根据某些变量来改变文本所说的内容。
这是一些示例代码,显示了我到目前为止所拥有的内容,并且我已经被困在搜索如何将小吃店移动到 onclicked 方法中的很长时间了。由于某种原因,我无法将 Scaffold Context 传递给方法,因此小吃店失败
import 'package:flutter/material.dart';
void main() => runApp(new SnackBarDemo());
class SnackBarDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
body: new SnackBarPage(),
),
);
}
}
class SnackBarPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Center(
child: SnackBarButton(),
);
}
}
class SnackBarButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Container(
child: new RaisedButton(
onPressed: () {Scaffold.of(context).showSnackBar(SnackBar(content: Text("HERE'S A SNACKBAR")));},
child: Text("CLICK ON …Run Code Online (Sandbox Code Playgroud) 所以我在 mac 上想要尝试最新的 llvm 版本,而不必等待它们在 xcode 命令行工具上传递。
因此,我从他们的下载页面下载了 LLVM 10 版本的预构建二进制文件,并将其放在名为 llvm 的文件夹中。因此,可以在 ~/SDKs/LLVM/bin 中找到 clang 可执行文件。
我制作这个程序:
#include <string>
#include <iostream>
int main(int argc, char const *argv[])
{
std::string myString("Hello World");
std::cout << myString;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并运行:
~/SDKs/Clang+LLVM10/bin/clang++ main.cpp
Run Code Online (Sandbox Code Playgroud)
我收到这个致命错误:
~/SDKs/Clang+LLVM10/bin/../include/c++/v1/string.h:60:15: fatal error:
'string.h' file not found
#include_next <string.h>
^~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
这没有意义,因为我可以使用 finder 手动找到 string.h,并且它就在错误中引用的文件夹中。
我猜这与 clang++ 首先搜索我的系统包含路径有关,在那里找到旧的 string.h ,因此选择不使用更新的 string.h ,从而导致错误?
一些附加信息(如果有帮助的话):
运行这个(新编译器)
~/Programming/SDKs/Clang+LLVM10/bin/clang++ -Wp,-v -E -xc -x c++ /dev/null
Run Code Online (Sandbox Code Playgroud)
给我:
clang -cc1 version 10.0.0 based upon LLVM …Run Code Online (Sandbox Code Playgroud) 所以我正在使用 flutter web + cloud firestore
为了让云 Firestore 工作,我必须修改我的 index.html。问题是每次我跑
flutter build web
Run Code Online (Sandbox Code Playgroud)
它覆盖了我的 index.html,我必须手动重新添加所有必要的代码片段才能让它再次工作。
有没有一种方法可以在不覆盖 index.html 的情况下运行 flutter build web?
另一个相关问题是,当我将站点部署到 firebase 时,它工作正常,但是当我在本地运行此站点进行测试时,使用
flutter run -d chrome
Run Code Online (Sandbox Code Playgroud)
当它在 chrome 上运行时,该站点再次使用了一个全新的 index.html,没有必要的代码,所以它不起作用。我没有机会编辑 index.html 来应用必要的代码,因为它会立即构建并运行。
有没有办法解决这个问题?