如何解决子重复错误?

Posted

技术标签:

【中文标题】如何解决子重复错误?【英文标题】:How can I resolve child duplication error? 【发布时间】:2021-02-21 00:03:10 【问题描述】:

如何解决子重复错误:

错误:重复的命名参数“孩子”。 孩子:CenteredView(

这是我的代码:

Container(
               child: RaisedButton(
                 onPressed: (),
                  child: Text(
                   'Alcoholic Beverages',
                   style: TextStyle(
                     decoration:TextDecoration.underline,
                     fontSize: 25,
                   ),
                 ),
               ),
                 child: CenteredView(
                     child: Column(
                         mainAxisAlignment: MainAxisAlignment.spaceBetween,
                         children: <Widget>[
                           NavigationBar()
                         ]
                     )
                 )
             ),
               ]
        ),

    );
  

【问题讨论】:

【参考方案1】:

Container 小部件只能有一个孩子。 要布局多个子级,请将此小部件的子级设为 RowColumnStack 等小部件。

【讨论】:

【参考方案2】:

在您的 Container 中,您有两个孩子,而 Container 小部件只能容纳一个孩子。所以你需要使用一些可以有多个孩子的小部件。 ColumnRow 允许您这样做。 检查此链接以阅读有关多子小部件的更多信息,与 Container 不同的是,Container 是单子小部件,列和行是多子小部件。 Multi-Child Widget

import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';

class selClass extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      home: sel(),
    );
  


class sel extends StatefulWidget 
  @override
  _selState createState() => _selState();


class _selState extends State<sel> 
  String _date = "Not set";

  @override
  Widget build(BuildContext context) 
    return Scaffold(
      body: SafeArea(child:SingleChildScrollView(
    child: Container(   child: Column ( 
children: [
               RaisedButton(
                 onPressed: (),
                  child: Text(
                   'Alcoholic Beverages',
                   style: TextStyle(
                     decoration:TextDecoration.underline,
                     fontSize: 25,
                   ),
                 ),
               ),
                  CenteredView(
                     child: Column(
                         mainAxisAlignment: MainAxisAlignment.spaceBetween,
                         children: <Widget>[
                           NavigationBar()
                         ]
                     ),
                 ),
               ]
        ),

    );
  




【讨论】:

【参考方案3】:

Container 只能有一个 Child 。这就是您收到此错误的原因。如果您的视图是垂直的,则需要 Column ;如果您的视图是水平的,则需要 Row 。用它来解决你的问题:

Column :

Container(
        child: Column(
          children: [
            RaisedButton(
              onPressed: () ,
              child: Text(
                'Alcoholic Beverages',
                style: TextStyle(
                  decoration: TextDecoration.underline,
                  fontSize: 25,
                ),
              ),
            ),
            CenteredView(
                child: Column(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: <Widget>[NavigationBar()])),
          ],
        ),
      ),
    );
  


OR

Row :

Container(
        child: Row(
          children: [
            RaisedButton(
              onPressed: () ,
              child: Text(
                'Alcoholic Beverages',
                style: TextStyle(
                  decoration: TextDecoration.underline,
                  fontSize: 25,
                ),
              ),
            ),
            CenteredView(
                child: Column(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: <Widget>[NavigationBar()])),
          ],
        ),
      ),
    );
  

【讨论】:

以上是关于如何解决子重复错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决未来的警告错误 [重复]

如何解决gradle build中的重复类错误?

如何解决导致重复标注的 MapKit 错误?

如何解决操作系统错误[重复]

如何解决此错误:跳转到案例标签交叉初始化[重复]

maven安装时出现编译错误我该如何解决这个错误[重复]