小编Bra*_*sen的帖子

Flutter:Tabbar 与底部导航栏

我试图找出启用滑动的底部导航的最佳方式。我发现了两个很有前途的小部件:Tabbar(带有 TabBarView)和 BottomNavigationBar。标签栏易于使用并具有控制器属性,可以轻松地在标签之间滑动。但是没有办法设置背景色(或者我错了?)。底部导航栏允许在 appBar 之外进行自定义,但不适用于控制器。那么我将如何使用底部导航栏?我应该手动显示和隐藏页面/小部件吗?

dart flutter

6
推荐指数
1
解决办法
4605
查看次数

无状态和有状态小部件之间有什么区别?

我正在学习Dart/flutter并试图了解Widgets系统的工作原理.但我无法理解无状态小工具和有状态小工具之间的区别?比如我有按钮.它有什么类型?

让我们想象两个案例.我发送文本到按钮,然后显示它.我发送文本到按钮,它的颜色改变了.

如果我创建不合适的Widget类型会是什么?

flutter

6
推荐指数
3
解决办法
1915
查看次数

如何在Flutter中绘制自定义圆角矩形边框(ShapeBorder)?

我正在尝试扩展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)

dart flutter

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

如何将手势传递给下面的物体?

我正在尝试击中最上面可见的物体后面的物体。我试图通过使用 的属性来实现这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会打印到控制台。文档看起来这是正确的做法,但也许我在这里遗漏了一些东西?

dart flutter

6
推荐指数
1
解决办法
5152
查看次数

MATLAB作为具有Javascript的COM自动化服务器

我试图按照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上是不可能的。

javascript com matlab typescript

6
推荐指数
1
解决办法
185
查看次数

StreamProvider 不更新状态

我正在尝试使用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)

dart flutter flutter-provider

6
推荐指数
1
解决办法
3517
查看次数

IconButton引发异常

我正在尝试使用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 flutter

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

Dart 中的类型定义

所以我在 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实际将作为参数传递什么?

dart flutter

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

React Vite:找不到本地模块的导出(从 CRA 迁移)

我正在尝试从本地 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 注册表安装的软件包),所以我确信问题出在我这边,但我无法找出导致它的原因。

问题 1:如何使这些导入工作正常?

由于他们确实使用 Webpack 工作,我不太确定为什么他们不能使用 Vite 工作?Vite 要求我的项目将项目设置为模块(在package.json-中"type": "module")。模块中导入的工作方式是否会破坏我当前的代码?

问题 2:如何让我的 linter 显示这些错误?

我正在使用 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)

node.js node-modules typescript es6-modules vite

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

如何从叠加层中删除 OverlayEntry?

我只是想删除OverlayEntry我之前插入的一个Overlay

rootOverlay.insert(entry);
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到一种方法来做到这一点。
我确实_removeOverlayState类中找到了一个私有方法,但我无法访问它。

我错过了什么吗?你会如何在 Flutter 中做到这一点?

dart flutter

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