面试题答案
一键面试思路
- 设置渐变背景:使用
DecoratedBox
或Container
的decoration
属性设置渐变背景。 - 水平均匀分布且宽度自适应:使用
Row
或Flex
布局,并设置mainAxisAlignment: MainAxisAlignment.spaceEvenly
使子Widget水平均匀分布。使用Flexible
或Expanded
包裹子Widget以使其宽度随父容器自适应。 - 处理滚动情况:当子Widget数量超过一定值时,使用
SingleChildScrollView
或ListView
包裹整个布局,使其在垂直方向可滚动。
关键代码片段(以Flutter为例)
import 'package:flutter/material.dart';
class MyWidget extends StatelessWidget {
final List<Widget> children;
MyWidget({required this.children});
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Colors.blue, Colors.green],
),
),
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: children.map((child) => Flexible(child: child)).toList(),
),
),
);
}
}
在使用时:
void main() {
runApp(MaterialApp(
home: Scaffold(
body: MyWidget(
children: List.generate(
20,
(index) => Container(
height: 50,
color: Colors.red,
child: Center(child: Text('Item $index')),
),
),
),
),
));
}