我有这门课:
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小部件,根据屏幕大小显示额外的数据.有没有人知道在多种不同的屏幕尺寸上测试这个小部件的方法?
我已经浏览了widget_tester源代码,但找不到任何东西.
我是新来的扑扑。我正在尝试实现此用户界面
我还没有找到任何完整的解决方案来在flutter中创建透明的底部导航栏。
我尝试使用
BottomNavigationBarItem(
backgroundColor: Colors.transparent,
icon: e,
activeIcon: _activeIcons[_index],
title: Text(
title[_index],
style: AppStyle.tabBarItem,
),
)
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。请帮忙。
在 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 …
我正在尝试合并 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 函数相同的操作,但是如果一个数组比另一个长,我只想将剩余的项目附加到末尾。
我们如何在 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)