我需要相对于鼠标位置放大/缩小滚动窗格.
我目前通过将我的内容包装在一个组中,并缩放组本身来实现缩放功能.我使用自定义数据透视创建一个新的Scale对象.(枢轴设置为鼠标位置)
这适用于组的初始比例为1.0的情况,但之后的缩放不会在正确的方向上缩放 - 我相信这是因为当缩放组时相对鼠标位置会发生变化.
我的代码:
@Override
public void initialize(URL location, ResourceBundle resources) {
Delta initial_mouse_pos = new Delta();
anchorpane.setOnScrollStarted(event -> {
initial_mouse_pos.x = event.getX();
initial_mouse_pos.y = event.getY();
});
anchorpane.setOnScroll(event -> {
double zoom_fac = 1.05;
double delta_y = event.getDeltaY();
if(delta_y < 0) {
zoom_fac = 2.0 - zoom_fac;
}
Scale newScale = new Scale();
newScale.setPivotX(initial_mouse_pos.x);
newScale.setPivotY(initial_mouse_pos.y);
newScale.setX( content_group.getScaleX() * zoom_fac );
newScale.setY( content_group.getScaleY() * zoom_fac );
content_group.getTransforms().add(newScale);
event.consume();
});
}
private class Delta { double x, y; }
Run Code Online (Sandbox Code Playgroud)
如何在不同的缩放级别获得正确的鼠标位置?是否有一种完全不同的方式来缩放ScrollPane更容易?
使用平台通道,Flutter可以与本机平台互操作(即读取电池电量).在Android上,这需要调用Java方法.
我想使用第三方Java SDK(适用于AWS Cognito).我可以将这个库放在我的某个地方/android,并与之交互吗?如果是这样,我该怎么做?
我想在一个容器中运行RabbitMQ,在另一个容器中运行工作进程。工作进程需要访问RabbitMQ。
我希望这些可以通过管理docker-compose。
docker-compose.yml到目前为止,这是我的文件:
version: "3"
services:
rabbitmq:
image: rabbitmq
command: rabbitmq-server
expose:
- "5672"
- "15672"
worker:
build: ./worker
depends_on:
- rabbitmq
# Allow access to docker daemon
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
因此,我公开了RabbitMQ端口。工作进程使用以下URL访问RabbitMQ:
amqp://guest:guest@rabbitmq:5672/
Run Code Online (Sandbox Code Playgroud)
它们在官方教程中使用的是它们,但localhost已被替换为rabbitmq,因为容器应该可以使用与容器名称相同的主机名来发现:
默认情况下,Compose为您的应用设置单个网络。服务的每个容器都加入默认网络,并且都可以被该网络上的其他容器访问,并且可以在与容器名称相同的主机名下被发现。
每当我运行此命令时,都会出现连接拒绝错误:
Recreating ci_rabbitmq_1 ... done
Recreating ci_worker_1 ... done
Attaching to ci_rabbitmq_1, ci_worker_1
worker_1 | dial tcp 127.0.0.1:5672: connect: connection refused
ci_worker_1 exited with code 1
Run Code Online (Sandbox Code Playgroud)
我发现这很有趣,因为即使我将其指定为主机名,它也会使用IP地址127.0.0.1(我认为)是。我不是Docker网络方面的专家,所以也许这是理想的。localhostrabbitmq
如果需要,我很乐意提供更多信息!
编辑
有几乎相同的问题在这里 …
driver.get(url)当我尝试将它与其他函数组合时,调用会导致错误。这是我的小功能方法:
const webdriver = require('selenium-webdriver');
const By = webdriver.By;
const R = require('ramda');
// Load a webpage
const loadPage = url => driver => driver.get(url)
// Find an WebElement via some locator
const getElement = locator => driver => driver.findElement(method)
// Locator by name
const byName = name => By.name(name)
// Send a series of input keys to a WebElement
const sendKeys = keys => elem => elem.sendKeys(keys)
Run Code Online (Sandbox Code Playgroud)
以下最小示例加载 Google,并向搜索栏写入一条消息。这有效:
// Navigate to the Google webpage
const loadGoogle = …Run Code Online (Sandbox Code Playgroud) 我正在使用一个简单的TextField包裹在Container. 当用户键入一个长字符串时,我希望它自动换行到新行。
它目前从屏幕上流出,在一行上。我该如何解决?
当用户滚动到列表或 TabView 的边缘时,结束边缘会出现一个蓝色动画圆圈。
这叫什么,我如何改变它的颜色?
干杯。
对于使用Flutter和Dart构建的应用程序,我想使用Cognito对我的用户进行身份验证.
不幸的是,Dart不存在原生AWS开发工具包,我不能在Flutter中使用JS互操作.
我查看了OAuth2流程,但这需要将我的用户重定向到登录表单,这对于移动应用程序来说并不是很好.
有哪些替代方案?
我在 MobileHub 中使用 AWS Amplify 库。
我连接了一个 Cognito 用户池和一个 API 网关(与 Lambda 函数通信)。我希望我的用户在访问资源之前进行签名,因此我在 MobileHub 用户登录页面和云逻辑页面中启用了“强制登录”。
身份验证工作正常,但是当我向 API 发送 GET 请求时,收到此错误:
"[WARN] 46:22.756 API - ensure credentials error": "cannot get guest credentials when mandatory signin enabled"
Run Code Online (Sandbox Code Playgroud)
我了解 Amplify 会生成访客凭证,并将这些凭证放入我的 GET 请求中。由于我启用了“强制登录”,这不起作用。
但是为什么要使用访客凭证呢?我已经登录 - 它不应该使用这些凭据吗?如何使用已验证用户的信息?
干杯。
编辑:这是来自 Lambda 函数的代码:
拉姆达函数:
import { success, failure } from '../lib/response';
import * as dynamoDb from '../lib/dynamodb';
export const main = async (event, context, callback) => {
const params = {
TableName: 'chatrooms',
Key: {
user_id: …Run Code Online (Sandbox Code Playgroud) 我是 NextJS 的新手。我有一个页面需要显示从 Hasura GraphQL 后端提取的实时数据。
在其他非 NextJS 应用程序中,我将 GraphQL 订阅与 Apollo 客户端库结合使用。在幕后,这使用了 websocket。
当不使用订阅时,我可以让 GraphQL 在 NextJS 中工作。我很确定这是在服务器端运行的:
import React from "react";
import { AppProps } from "next/app";
import withApollo from 'next-with-apollo';
import { ApolloProvider } from '@apollo/react-hooks';
import ApolloClient, { InMemoryCache } from 'apollo-boost';
import { getToken } from "../util/auth";
interface Props extends AppProps {
apollo: any
}
const App: React.FC<Props> = ({ Component, pageProps, apollo }) => (
<ApolloProvider client={apollo}>
<Component {...pageProps}/>
</ApolloProvider>
);
export default …Run Code Online (Sandbox Code Playgroud) 我的应用程序中有多个 SlateJS 编辑器,代表单个页面。添加新页面时,我希望将焦点更改为该页面内的编辑器。
我不知道该怎么做!我的文档检查,并有onFocus和onBlur钩插件,但这是反应焦点的变化。在slack 社区片段上有这样的:
// Moving cursor to the end of the document
ReactEditor.focus(editor);
Transforms.select(editor, Editor.end(editor, []));
Run Code Online (Sandbox Code Playgroud)
但我也不能让它工作。这是我的代码的简化版本:
根元素
<div>
{pages.map((pageID: number) => (
<Page onChange={updatePage(pageID)}/>
))}
</div>
Run Code Online (Sandbox Code Playgroud)
页面元素
<div>
<Input onChange={onChange}/>
</div>
Run Code Online (Sandbox Code Playgroud)
然后<Input/>元素从 中呈现Slate和Editable组件slate-react。
我试过 RTFM,但除了插件页面之外,我合法地找不到任何关于管理焦点的信息。
我试过添加一个focusOnRender布尔道具,并在Input元素上使用它的钩子:
useEffect(() => {
if (focusOnRender)
ReactEditor.focus(editor);
}, [focusOnRender]);
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用。
我在描述一个editor.focus()函数的文档中找到了这个页面,但是当我尝试这个时,我收到以下错误:
TypeError: editor.focus is …Run Code Online (Sandbox Code Playgroud) flutter ×4
dart ×2
java ×2
javascript ×2
reactjs ×2
typescript ×2
android ×1
apollo ×1
aws-amplify ×1
docker ×1
focus ×1
input ×1
interop ×1
javafx ×1
javafx-8 ×1
networking ×1
next.js ×1
rabbitmq ×1
ramda.js ×1
scrollpane ×1
selenium ×1
slatejs ×1
textfield ×1
zoom ×1