Flutter中Container能否包含多个子组件?报错问题咨询
问题解答:Flutter Container内添加多个子组件
当然可以在Container里放多个子组件,但Container本身只接受一个child参数,这就是你报错the argument for the named parameter 'child' was already specified的原因——你给同一个Container传了两次child,这在Dart的命名参数规则里是不允许的。
要实现多个子组件的需求,你需要用一个布局组件把多个子元素包裹起来,再把这个布局组件作为Container的唯一child。常用的布局组件有:
Column:垂直排列子组件Row:水平排列子组件Stack:层叠排列子组件(正好适配你的场景,因为你要同时显示图片和文字)
针对你的代码,修改后的可运行版本如下:
class Application extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( home: new Scaffold( body: new Container( color: Color(0xff258DED), height: 400.0, alignment: Alignment.center, // 用Stack包裹多个子组件,作为Container的唯一child child: new Stack( alignment: Alignment.center, // 让Stack内的子组件居中对齐 children: [ new Container( height: 200.0, width: 200.0, decoration: new BoxDecoration( image: DecorationImage( image: new AssetImage('assets/logo.png'), fit: BoxFit.fill ), shape: BoxShape.circle ), ), new Container( child: new Text('Welcome to Prime Message', textAlign: TextAlign.center, style: TextStyle( fontFamily: 'Aleo', fontStyle: FontStyle.normal, fontWeight: FontWeight.bold, fontSize: 25.0, color: Colors.white ), ), ), ], ), ), ), ); } }
修改说明
- 替换了原代码中重复的
child参数,用Stack组件作为父Container的唯一子元素 - 将图片Container和文字Container放入
Stack的children列表中,实现层叠显示 - 设置
Stack的alignment: Alignment.center,确保两个子组件都居中展示
这样修改后,代码就能正常运行,你也能在同一个父Container内展示多个子组件了。
内容的提问来源于stack exchange,提问作者Ranto Berk
相关产品推荐
相关产品推荐

