小编Val*_*nal的帖子

展开 Stack 小部件内的小部件

我有一个堆栈小部件,里面有两个小部件。其中一个绘制背景,另一个绘制在背景之上。我希望两个小部件具有相同的大小。

我希望顶部小部件(一列)能够将堆栈垂直扩展并填充到背景小部件设置的大小。我尝试设置主轴,mainAxisSize: MainAxisSize.max但没有用。

我怎样才能让它工作?

flutter

24
推荐指数
3
解决办法
9663
查看次数

无法在颤动中截取屏幕截图

package:flutter/src/rendering/proxy_box.dart': 失败的断言: line 2813 pos 12: '!debugNeedsPaint': 不是真的。

我正在尝试在颤振中截取屏幕截图,但出现异常。我访问了许多链接,但没有任何效果。

Future<Uint8List> _capturePng() async {
    try {
        print('inside');
        RenderRepaintBoundary boundary = _globalKey.currentContext.findRenderObject();
        ui.Image image = await boundary.toImage(pixelRatio: 3.0);
        ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
        var pngBytes = byteData.buffer.asUint8List();
        var bs64 = base64Encode(pngBytes);
        print(pngBytes);
        print(bs64);
        setState(() {});
        return pngBytes;
    } catch (e) {
        print(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

flutter

14
推荐指数
2
解决办法
3906
查看次数

Flutter,如何在同一设备上发布和调试应用程序?

我正在使用 flutter 开发一个应用程序(目前仅限 Android),该应用程序可以从 Google Play 下载。我已在手机上安装了发布的应用程序。但是,每当我使用 android studio 在设备上启动调试时,它都会删除已发布的版本。我想要的是同时拥有两个应用程序,例如我的设备上的“App”“App_debug”

如何设置我的项目,以便调试和发布应用程序之间不存在冲突?

谢谢。

android dart flutter

9
推荐指数
1
解决办法
1902
查看次数

在 iOS 模拟器中启动 Flutter 应用程序时出错

在 iOS 模拟器上启动 Flutter 应用程序时遇到问题。根据以下错误输出判断,该问题似乎与本地主机连接等有关,但我无法找到解决方法。

我正在运行 MacOS Catalina 版本 10.15.6 (19G73)。iOS 模拟器版本 11.6 (921.9.1)。VSCode 是我的 IDE。

该应用程序在 Android 模拟器上启动并运行良好。

以下是 VSCode 终端的错误输出:

Launching lib/main.dart on iPhone SE (2nd generation) in debug mode...
Running Xcode build...                                                  
 ??Compiling, linking and signing...                         6.7s
Xcode build done.                                           16.7s
Connecting to the VM Service is taking longer than expected...
Still attempting to connect to the VM Service...
If you do NOT see the Flutter application running, it might have crashed. The device logs (e.g. from …
Run Code Online (Sandbox Code Playgroud)

simulator ios visual-studio-code flutter

9
推荐指数
1
解决办法
3625
查看次数

如何在 GitHub 操作中使用工作目录?

我正在尝试在存储库的嵌套文件夹中设置并运行 GitHub 操作。

我以为我可以使用working-directory,但如果我这样写:

jobs:
  test-working-directory:
    runs-on: ubuntu-latest
    name: Test
    defaults:
      run:
        working-directory: my_folder
    steps:
      - run: echo test
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Run echo test
echo test
shell: /usr/bin/bash -e {0}
Error: An error occurred trying to start process '/usr/bin/bash' with working directory '/home/runner/work/my_repo/my_repo/my_folder'. No such file or directory
Run Code Online (Sandbox Code Playgroud)

我注意到my_repo错误的路径中出现了两次。

这是我的存储库上的运行,其中:

  • my_repo = novade_flutter_packages
  • my_folder = packages

我缺少什么?

github github-actions

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

Flutter Riverpod 消除多个依赖提供程序

正如 Riverpod 文档中所述,Riverpod 提供程序可以监视其他提供程序来创建“处理管道”。

我有这样的事情:

final prov = Provider<String>((ref){

    final w1 = ref.watch(prov1);
    final w2 = ref.watch(prov2);
    final w3 = ref.watch(prov3);
    final w4 = ref.watch(prov4);

    final complex = expensiveFunction(w1,w2,w3,w4);

    return complex;
});
Run Code Online (Sandbox Code Playgroud)

prov1可以prov4通过 UI 的各个部分单独修改,但某些 UI 操作会导致其中部分或全部快速连续更改。

我怎样才能消除呼叫expensiveFunction()直到w1..w4在 2 秒内都没有改变?

flutter riverpod

8
推荐指数
1
解决办法
1404
查看次数

Pipreqs requirements.txt is not correct

您好,我在使用 Python 库时遇到问题pipreqs。它不会生成正确的requirements.txt文件。我正在使用 Python 虚拟环境,我安装的唯一软件包是pipreqsselenium

pip install pipreqs
pip install selenium
Run Code Online (Sandbox Code Playgroud)

项目结构:

MyProject
 |- test.py
Run Code Online (Sandbox Code Playgroud)

并且test.py只有一行:

pip install pipreqs
pip install selenium
Run Code Online (Sandbox Code Playgroud)

首先当我这样做的时候

pipreqs ./
Run Code Online (Sandbox Code Playgroud)

我遇到了错误UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 3474: character maps to <undefined> ,我设法通过使用解决了

pipreqs ./ --encoding=utf-8
Run Code Online (Sandbox Code Playgroud)

但现在requirements.txt生成的结果与我的期望不符。在我看来,它应该等于:

selenium==1.341.0
Run Code Online (Sandbox Code Playgroud)

但它等于:

brotli==1.0.9
cryptography==3.2.1
ipaddr==2.2.0
lxml==4.6.1
mock==4.0.2
ordereddict==1.1
protobuf==3.13.0
pyOpenSSL==19.1.0
simplejson==3.17.2
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试克隆此代码并执行它时,pip install -r requirements.txt它不会安装selenium,并且代码不会运行。

这里发生了什么事?

python package requirements.txt

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

Dart Mockito - 如何在保留原始实现的同时进行模拟?

我想在我的 flutter 应用程序上编写一些集成测试。为此,我使用Mockito包。


我想模拟一个类,但也保留其原始实现。

假设我有一个模型MyModel(可能很复杂)和一个使用它的小部件。

class MyModel {
    void complexCallback() {}
}

class MyWidget extends StatelessWidget {
    const MyWidget(this.model);
    
    final MyModel model;
    
    @override
    Widget build(BuildContext context) {}
}
Run Code Online (Sandbox Code Playgroud)

我希望能够在测试中模拟MyModel以验证回调函数是否被调用(例如,点击按钮后),但我也希望MyModel表现得像它应该的那样,以验证屏幕上的影响(重建例如具有不同值的小部件)。

testWidget('Test MyModel and MyWidget', (WidgetTester tester) async {
    final model = MyModel(); // <- Cannot verify here because it is not mocked, if I replace by MockMyModel or FakeMyModel, the button doesn't do anything anymore
    await tester.pumpWidget(MyWidget(model));

    await tester.tap(find.byType(IconButton));  // <- Tap on …
Run Code Online (Sandbox Code Playgroud)

mocking mockito dart flutter flutter-test

7
推荐指数
0
解决办法
1134
查看次数

go_router - 有没有办法将同一页面推送两次?

我正在使用go_router构建一个执行“虚拟”路由推送的应用程序(有点像 Twitter)。可以从一个页面开始/a,推送/b,然后/c,...然后再次推送/a

当页面被推送两次时,会assert失败:assert(!keyReservation.contains(key));这确保了密钥在Navigator.

有没有办法能够使用 go_router 推送两次同一页面?

这是一个小代码片段:

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

void main() {
  runApp(const MyApp());
}

final router = GoRouter(
  initialLocation: '/a',
  routes: [
    GoRoute(
      path: '/a',
      builder: (_, __) => const MyWidget(path: '/a'),
    ),
    GoRoute(
      path: '/b',
      builder: (_, __) => const MyWidget(path: '/b'),
    ),
  ],
);

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-navigation flutter-routes

7
推荐指数
1
解决办法
2268
查看次数

如何在ListView中添加Spacer

现在我正在使用一列来显示几个小部件:

Column(
  children: [
    Text('1'),
    Text('2'),
    Spacer(),
    Text('3'),
    Text('4'),
  ],
),
Run Code Online (Sandbox Code Playgroud)

所以屏幕看起来像这样:

---
 1
 2



 3
 4
---
Run Code Online (Sandbox Code Playgroud)

它允许我始终在小部件的顶部和底部对齐'1'和,而不管其大小。'2''3''4'


然而,当小部件变得太小时,它就会溢出:

---
 1
 2
 3
---
 4  // <- Overflow
Run Code Online (Sandbox Code Playgroud)

因此,我想用 so 达到相同的结果ListView

  • 当小部件足够高时,'1' '2'顶部对齐和'3' '4'底部对齐。
  • '2'当小部件不够高时,和之间不再有多余的空间'3',但用户可以向下滚动。

我无法使用Spacera ListView。它向我抛出错误:

Failed assertion: line 1940 pos 12: 'hasSize'
Run Code Online (Sandbox Code Playgroud)

实施它的正确方法是什么?

flutter flutter-layout flutter-listview

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