小编Jor*_*ies的帖子

如何在 Flutter 中测试使用 DateTime.now 的代码?

我有这门课:

import 'package:flutter/material.dart';

class AgeText extends StatelessWidget {
  final String dateOfBirth;

  const AgeText({Key key, @required this.dateOfBirth}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    final age = _calculateAge();
    return Text(age.toString());
  }

  int _calculateAge() {
    final dateOfBirthDate = DateTime.parse(dateOfBirth);
    final difference = DateTime.now().difference(dateOfBirthDate);
    final age = difference.inDays / 365;

    return age.floor();
  }
}
Run Code Online (Sandbox Code Playgroud)

我想测试它是否在传递出生日期时产生正确的年龄。在 Flutter 中执行此操作的最佳方法是什么?


解决方案:对于那些感兴趣的人,这是使用@Günter Zöchbauer 对时钟包的建议的解决方案。

我的小部件类:

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

class AgeText extends StatelessWidget {
  final String dateOfBirth;
  final Clock clock;

  const AgeText({Key key, …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-test

18
推荐指数
3
解决办法
3348
查看次数

如何在不同的屏幕尺寸上测试Flutter小部件?

我有一个Flutter小部件,根据屏幕大小显示额外的数据.有没有人知道在多种不同的屏幕尺寸上测试这个小部件的方法?

我已经浏览了widget_tester源代码,但找不到任何东西.

flutter flutter-test

11
推荐指数
6
解决办法
1414
查看次数

颤振中的透明底部导航栏

我是新来的扑扑。我正在尝试实现此用户界面

屏幕截图

我还没有找到任何完整的解决方案来在flutter中创建透明的底部导航栏。

我尝试使用

BottomNavigationBarItem(
        backgroundColor: Colors.transparent,
        icon: e,
        activeIcon: _activeIcons[_index],
        title: Text(
          title[_index],
          style: AppStyle.tabBarItem,
        ),
      )
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。请帮忙。

dart flutter flutter-layout

7
推荐指数
4
解决办法
4223
查看次数

如何在小部件测试中找到离屏 ListView 子项?

在 ListView 中显示多个子项时,如果子项在屏幕外,则无法通过小部件测试找到。这是一个完整的例子:

main.dart

import 'package:flutter/material.dart';

void main() => runApp(App());

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: Scaffold(body: Test()));
  }
}

class Test extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ListView(
      children: <Widget>[
        Container(
          height: 600,
          color: Colors.red,
        ),
        Text("Find me!"),
      ],
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

main_test.dart

import 'package:flutter_app/main.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets("Find text", (WidgetTester tester) async {
    final testableWidget = App();

    await tester.pumpWidget(testableWidget);

    expect(find.text("Find me!"), findsOneWidget);
  });
}
Run Code Online (Sandbox Code Playgroud)

此测试失败,但是如果我将Containermain.dart …

flutter flutter-test

5
推荐指数
2
解决办法
3035
查看次数

如何在 Dart 中合并 2 个列表?

我正在尝试合并 2 个列表,因此输出如下:

List<String> array1 = ["John", "Bob", "Fred", "June", "Tom"];
List<String> array2 = ["House", "Flat", "Bungalow"];

List<String> output = //["John", "House", "Bob", "Flat", "Fred", "Bungalow", "June", "Tom"]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我已经查看了 quiver 库中的zip函数,但它只返回一个传递给它的最短列表的列表。

编辑:为了澄清,我本质上想做与 zip 函数相同的操作,但是如果一个数组比另一个长,我只想将剩余的项目附加到末尾。

dart flutter

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

如何更改 DropdownButton 中 Flutter DropdownMenuItem 的宽度/填充?

我们如何在 Dropdown 中更改 Flutter DropdownMenuItem 的宽度/填充?

Row(
  children: <Widget>[
    Expanded(
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          LightText(
            text: "Agent",
          ),
          Padding(
            padding: EdgeInsets.only(top: 3),
          ),
          Container(
            height: 27,
            child: Row(
              children: <Widget>[
                DropdownButtonHideUnderline(
                  child: DropdownButton<Agent>(
                    // isExpanded: true,
                    hint: Text(
                      agentName == null ? "" : agentName,
                      style: TextStyle(
                        fontSize: MediaQuery.of(context).size.width * 0.035,
                      ),
                    ),

                    value: selectedAgent,
                    onChanged: (Agent value) async {
                      selectedAgent = value;
                      agentName = selectedAgent.getAgentName();
                      agentId = selectedAgent.getAgentId();
                    },
                    items: agentList.map((Agent agent) {
                      return DropdownMenuItem<Agent>(
                        value: agent, …
Run Code Online (Sandbox Code Playgroud)

flutter

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

标签 统计

flutter ×6

flutter-test ×3

dart ×2

flutter-layout ×1