我需要相对于鼠标位置放大/缩小滚动窗格.
我目前通过将我的内容包装在一个组中,并缩放组本身来实现缩放功能.我使用自定义数据透视创建一个新的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网络方面的专家,所以也许这是理想的。localhost
rabbitmq
如果需要,我很乐意提供更多信息!
编辑
有几乎相同的问题在这里 …
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