【发布时间】:2021-03-08 14:10:18
【问题描述】:
我现在正在用 Flutter 编写一个应用程序,我想制作一个自定义 AppBar。我选择了两个图标按钮,将它们排成一排,并尝试填充它们之间的空间。不知何故,什么也没发生,他们呆在同一个地方。我希望一个 IconButton 在左边,另一个在右边。
这是我的代码:
class TopNavigator extends StatelessWidget {
const TopNavigator({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
IconButton(
padding: EdgeInsets.only(top: 15.0),
icon: Icon(
Icons.add_rounded,
),
iconSize: 40.0,
color: Colors.white,
onPressed: () {},
),
IconButton(
padding: EdgeInsets.only(top: 15.0),
icon: Icon(
Icons.all_inbox_rounded,
),
color: Colors.white,
iconSize: 40.0,
onPressed: () {},
),
],
);
}
}
当我通过 basudev nayak 运行此代码时,它给了我错误:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.black,
body: Row(
children: [
Column(
children: [
TopNavigator(),
],
)
],
),
),
);
}
}
class TopNavigator extends StatelessWidget {
const TopNavigator({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
IconButton(
padding: EdgeInsets.only(top: 15.0),
icon: Icon(
Icons.add_rounded,
),
iconSize: 40.0,
color: Colors.white,
onPressed: () {},
),
Spacer(),
IconButton(
padding: EdgeInsets.only(top: 15.0),
icon: Icon(
Icons.all_inbox_rounded,
),
iconSize: 40.0,
color: Colors.white,
onPressed: () {},
),
],
);
}
}
Errors:
════════ Exception caught by rendering library ═════════════════════════════════════════════════════
RenderBox was not laid out: RenderFlex#e3531 relayoutBoundary=up1 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1785 pos 12: 'hasSize'
The relevant error-causing widget was:
Scaffold file:///C:/Users/Eugen/Desktop/FlutterProjects/eduhub/lib/main.dart:9:13
════════════════════════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by rendering library ═════════════════════════════════════════════════════
Null check operator used on a null value
The relevant error-causing widget was:
Row file:///C:/Users/User/Desktop/FlutterProjects/eduhub/lib/main.dart:11:15
════════════════════════════════════════════════════════════════════════════════════════════════════
【问题讨论】:
-
在行中的它们之间尝试一个 Spacer() 小部件。另外,我建议这篇文章了解一些布局背景信息:medium.com/flutter-community/…
标签: flutter dart material-design