我试图找出启用滑动的底部导航的最佳方式。我发现了两个很有前途的小部件:Tabbar(带有 TabBarView)和 BottomNavigationBar。标签栏易于使用并具有控制器属性,可以轻松地在标签之间滑动。但是没有办法设置背景色(或者我错了?)。底部导航栏允许在 appBar 之外进行自定义,但不适用于控制器。那么我将如何使用底部导航栏?我应该手动显示和隐藏页面/小部件吗?
我正在学习Dart/flutter并试图了解Widgets系统的工作原理.但我无法理解无状态小工具和有状态小工具之间的区别?比如我有按钮.它有什么类型?
让我们想象两个案例.我发送文本到按钮,然后显示它.我发送文本到按钮,它的颜色改变了.
如果我创建不合适的Widget类型会是什么?
我正在尝试扩展ShapeBorder类以添加一些功能.但只是玩弄这个paint方法,我找到了一些我没想到的东西:
class CustomRoundedRectangleBorder extends ShapeBorder {
final double borderWidth;
final BorderRadius borderRadius;
const CustomRoundedRectangleBorder({
this.borderWidth: 1.0,
this.borderRadius: BorderRadius.zero,
})
: assert(borderRadius != null);
@override
EdgeInsetsGeometry get dimensions {
return new EdgeInsets.all(borderWidth);
}
@override
ShapeBorder scale(double t) {
return new CustomRoundedRectangleBorder(
borderWidth: borderWidth * (t),
borderRadius: borderRadius * (t),
);
}
@override
ShapeBorder lerpFrom(ShapeBorder a, double t) {
assert(t != null);
if (a is CustomRoundedRectangleBorder) {
return new CustomRoundedRectangleBorder(
borderWidth: ui.lerpDouble(a.borderWidth, borderWidth, t),
borderRadius: BorderRadius.lerp(a.borderRadius, borderRadius, …Run Code Online (Sandbox Code Playgroud) 我正在尝试击中最上面可见的物体后面的物体。我试图通过使用 的属性来实现这GestureDetector一点behavior。
其代码如下:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new GestureDetector(
onTap: () => print("Bottom"),
child: new Container(
color: Colors.redAccent,
child: new Center(
child: new GestureDetector(
onTap: () => print("Top"),
behavior: HitTestBehavior.translucent,
child: new Container(
width: 200.0,
height: 200.0,
color: Colors.blue.withOpacity(0.3),
),
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎不起作用。只有Top会打印到控制台。文档看起来这是正确的做法,但也许我在这里遗漏了一些东西?
我试图按照MathWorks网站上的建议,使用COM自动化服务器在Matlab和Javascript(在我的情况下为打字稿)程序之间建立连接。网站上的文档提供了一些由MS创建的语言示例,而不是针对javascript的示例。
我似乎找不到很多有关如何用JS建立这样的COM连接的信息。据我了解,这是一项仅用于Internet Explorer的旧Microsoft功能。
问题
我正在编写的程序是VS Code扩展,因此我根本没有使用Internet Explorer。结果,我不相信我可以使用ActiveXObjects。
问题
有没有其他方法可以在我的打字稿代码和Matlab实例之间建立连接?
目标
我试图从VS Code终端运行Matlab文件,而无需打开自定义Matlab终端或完整的Matlab GUI。输出也应显示在VS Code终端中。在MacOS和Linux上,我可以简单地使用CLI工具,但是由于Windows版本和MacOS / Linux版本之间的差异,在Windows上是不可能的。
我正在尝试使用StreamProvider(来自这个很棒的包),但我一直在努力让特定的流工作。
我创建了一个StreamController我用来Stream通过它的Sink. 所有这些似乎都运行良好。但是当将它Stream与 一起使用时StreamProvider,小部件树不会反映Stream. 但是,使用StreamBuilder.
使用的代码StreamProvider:
class TestPage extends StatelessWidget {
final Mockup exchange = ExchangeApi.mockup;
@override
Widget build(BuildContext context) {
return StreamProvider<List<Data>>(
builder: (BuildContext context) => Wrapper.mockup.stream,
initialData: null,
catchError: (BuildContext context, e) {
print("Error: $e");
return null;
},
child: TestPageBody(),
);
}
}
class TestPageBody extends StatelessWidget {
@override
Widget build(BuildContext context) {
List<Data> dataList = Provider.of<List<Data>>(context);
return …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Flutter中的一些图标制作一个简单的AppBar小部件,但我不断得到这个断言:
The following assertion was thrown building IconButton(Icon(IconData(U+0E5D2)); disabled; tooltip:
Run Code Online (Sandbox Code Playgroud)
我几乎只是模仿了文档,但这是我的代码:
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
title: "Stateless Widget Example",
home: new AppBar(title: new Text("App Bar"))
));
}
class AppBar extends StatelessWidget {
AppBar({this.title});
final Widget title;
@override
Widget build(BuildContext context) {
return new Container(
height: 56.0,
padding: const EdgeInsets.symmetric(horizontal: 8.0),
decoration: new BoxDecoration(
color: Colors.cyan,
border: new Border(
bottom: new BorderSide(
width: 1.0,
color: Colors.black
)
)
),
child: new Row (
children: <Widget> [
new IconButton( …Run Code Online (Sandbox Code Playgroud) 所以我在 Dart 中使用 typedef 已经有一段时间了,而没有考虑它们实际上是什么。例如在这段代码中:
new PageRouteBuilder(
pageBuilder: (BuildContext context, Animation<double> animation1, Animation<double> animation2) => new Test(),
transitionsBuilder: (BuildContext context, Animation<double> animation1, Animation<double> animation2, Widget child) {
return new FadeTransition(
child: child,
opacity: animation1,
);
}
)
Run Code Online (Sandbox Code Playgroud)
该pageBuilder属性需要一个名为的typedef RoutePageBuilder并为transitionsBuilder财产被称为typedef的RouteTransitionsBuilder预期。
对我来说,看起来我只是对那些带有来自 typedef 的预定义参数的属性使用一个函数,但我不确定这一点。
另外,这里的输入实际上是什么参数?因为我已经例如用作Animation<double> animation1参数但实际上并没有创建一个 new Animation,或者是吗?如果不是,那么Animation实际将作为参数传递什么?
我正在尝试从本地 Nodejs 包导入导出的成员。在使用 Vite(标准 CRA webpack 设置)之前,这些工作正常,但自从切换到 Vite 后,我收到以下错误:
Uncaught SyntaxError:
The requested module '/@fs/Users/...{long_path}.../lib/shared/countries/build/index.js'
does not provide an export named 'countryListAllIsoData'
Run Code Online (Sandbox Code Playgroud)
Vite 项目是使用npm create vite@latesttypescript 、 react、swc 预设进行设置的。
这些失败的导入仅发生在本地软件包上(没有从 npm 注册表安装的软件包),所以我确信问题出在我这边,但我无法找出导致它的原因。
由于他们确实使用 Webpack 工作,我不太确定为什么他们不能使用 Vite 工作?Vite 要求我的项目将项目设置为模块(在package.json-中"type": "module")。模块中导入的工作方式是否会破坏我当前的代码?
我正在使用 VS Code,它似乎对模块的导入方式非常满意。没有显示错误,我可以毫无问题地转到导入的定义(让我相信所有内容都已正确导出)。
我导入如下:
import { countryListAllIsoData } from "countries";
Run Code Online (Sandbox Code Playgroud)
该tsconfig.json文件未受影响(与创建时完全相同npm create vite@latest)。这同样适用于该package.json文件,除了安装了一些模块(例如导致此问题的模块)。
导致此问题的本地包已命名,countries并且相当小且简单。它有以下package.json文件:
/// package.json
{
"name": …Run Code Online (Sandbox Code Playgroud) 我只是想删除OverlayEntry我之前插入的一个Overlay:
rootOverlay.insert(entry);
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到一种方法来做到这一点。
我确实_remove在OverlayState类中找到了一个私有方法,但我无法访问它。
我错过了什么吗?你会如何在 Flutter 中做到这一点?
flutter ×8
dart ×7
typescript ×2
com ×1
es6-modules ×1
javascript ×1
matlab ×1
node-modules ×1
node.js ×1
vite ×1