小编Sha*_*cks的帖子

如何在Flutter的滚动视图中限制滚动距离?

我创建了一个页面,其中包含一个列中的几个文本字段和按钮,该列包含在具有背景图像的容器中.而这个容器本身就是一个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)

dart flutter

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

Flutter:如何通过方法显示小吃店

我想在一个方法中有一个小吃店,这样我就可以根据某些变量来改变文本所说的内容。

这是一些示例代码,显示了我到目前为止所拥有的内容,并且我已经被困在搜索如何将小吃店移动到 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)

dart flutter

4
推荐指数
1
解决办法
6465
查看次数

Clang++ 已更新,无法找到某些标头,尽管它们位于包含目录中

所以我在 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)

c++ std multiple-inclusions include-path clang++

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

如何阻止flutter web在每次构建时覆盖我的index.html?

所以我正在使用 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 来应用必要的代码,因为它会立即构建并运行。

有没有办法解决这个问题?

dart flutter flutter-web

0
推荐指数
1
解决办法
869
查看次数