首页 > 解决方案 > 错误:无法调用需要 const 表达式的非“const”构造函数

问题描述

我采用“BottomNavigationBar”示例在其上构建我的应用程序。我试图实现这样的 RaisedButton :

      child: Container(
        child: Column(
          children: <Widget>[
            RaisedButton(
              child: Text('Montag'),
            )
          ],
        ),
      ),
    ), 

并收到以下错误消息:

lib/main.dart:48:16: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
       child: Column(
              ^^^^^^
lib/main.dart:47:14: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
     child: Container(
            ^^^^^^^^^

我能做些什么?我知道这可能是一个不好的问题,但感谢任何帮助。

编辑:根据要求,这里有更多代码:

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  int _selectedIndex = 0;
  static const TextStyle optionStyle =
  TextStyle(fontSize: 30, fontWeight: FontWeight.bold);
  static const List<Widget> _widgetOptions = <Widget>[
    Text(
      'Index 0: Startseite',
      style: optionStyle,
    ),
    const Center(
      child: const Container(
        child: Column(
          children: <Widget>[
            RaisedButton(
              child: Text('Montag'),
            )
          ],
        ),
      ),
    ),
    const WebView(
      initialUrl: 'mygoogledrivelink',
      javascriptMode: JavascriptMode.unrestricted,
    ),
  ];

标签: flutterdart

解决方案


您没有显示它,但您肯定在小部件树中有一个更高的 const 小部件构造函数,这导致任何子小部件都需要使用const.

不幸的是,并非所有小部件都有const构造函数,Container并且Column是其中的两个示例。您将无法将这些小部件构造为构造函数的子级const

您可以尝试为所有需要const构造函数的小部件寻找替代品,也可以删除const父小部件中的关键字。


推荐阅读