我在创建列小部件时收到错误消息,提示“正在调用的构造函数不是
const
构造函数。”创建列小部件本身很困难,
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'My First Flutter App',
theme: ThemeData(
scaffoldBackgroundColor: Colors.white,
),
home: const WelcomeScreen());
}
}
class WelcomeScreen extends StatelessWidget {
const WelcomeScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const Scaffold(
body: Column(
children: <Widget>[
Text("Login"),
]
)
);
}}
只需删除脚手架之前的const即可。然后在列小部件的子项之前添加 const 关键字。
这就是你的代码应该是这样的
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'My First Flutter App',
theme: ThemeData(
scaffoldBackgroundColor: Colors.white,
),
home: const WelcomeScreen());
}
}
class WelcomeScreen extends StatelessWidget {
const WelcomeScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: const <Widget>[
Text("Login"),
...
]
)
);
}}
只需从
const
小部件中删除
Scaffold
Column
是一个非常量构造函数
Column({
Key? key,
您可以使用
const
,其中所有内容都可用作编译时间常数。在这种情况下,Column
打破了条件。您可以在孩子之前使用const
,现在可以使用Text
class WelcomeScreen extends StatelessWidget {
const WelcomeScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(children: const <Widget>[
Text("Login"),
]),
);
}
}
const
,您可以检查这个问题和指南。
从
const
小部件中删除 Scaffold
,它就可以正常工作了。但是会有另一个警告告诉您 Column
小部件没有 const
。
要解决此问题,您可以将
const
放在 <Widget>
前面,或将 const
放在 children of columns
前面
删除 Widget 上方的
const
关键字。