Flutter 颤振错误:元件类型';按钮';can';不能分配给列表类型';小部件';
我不知道为什么我会给出这个错误。我在这里写了button.dart文件:Flutter 颤振错误:元件类型';按钮';can';不能分配给列表类型';小部件';,flutter,dart,widget,syntax-error,flutter-dependencies,Flutter,Dart,Widget,Syntax Error,Flutter Dependencies,我不知道为什么我会给出这个错误。我在这里写了button.dart文件: import 'package:flutter/material.dart'; class Button { double left; double top; String text; Button(this.text,this.top, this.left); Widget button(){ return Positioned( left:left, top: top
import 'package:flutter/material.dart';
class Button {
double left;
double top;
String text;
Button(this.text,this.top,
this.left);
Widget button(){
return Positioned(
left:left,
top: top,
child:Container(
height: 54,
width: 157,
color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(49))
),
child: Center(
child: Text(text,
style: TextStyle(
fontFamily: 'MontserratAlternates',
fontStyle: FontStyle.normal,
fontWeight: FontWeight.bold,
fontSize: 20,
letterSpacing: -0.02,
color:Colors.black,
),
),
)
),),
);
}
}
我在main.dart文件中对其进行了编码,但它不起作用,然后我出现了一个错误“元素类型按钮无法分配给列表类型‘Widget’”。我不理解为什么会出现这个错误。
这是main.dart:
import 'package:flutter/material.dart';
import './number.dart';
import'./image.dart';
import './button.dart';
void main() {
runApp(Main());
}
class Main extends StatelessWidget {
@override
Widget build(BuildContext context){
return MaterialApp(
title: 'Main',
home: Scaffold(
body: Container(
child: Stack(
children:<Widget> [
image(context),
Number(),
Button("Start",412,45),
],
),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“./number.dart”;
导入“/image.dart”;
导入“./button.dart”;
void main(){
runApp(Main());
}
类Main扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:"主要",,
家:脚手架(
主体:容器(
子:堆栈(
儿童:[
图像(上下文),
数字(),
按钮(“开始”,412,45),
],
),
),
),
);
}
}
系统正在警告我,因此我不应该像大多数代码那样编写代码。我将更改您的按钮类,使其看起来更像这样:
class Button {
double left;
double top;
String text;
Widget button(this.text,this.top,this.left){
return Positioned(
left:left,
top: top,
child:Container(
height: 54,
width: 157,
color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(49))
),
child: Center(
child: Text(text,
style: TextStyle(
fontFamily: 'MontserratAlternates',
fontStyle: FontStyle.normal,
fontWeight: FontWeight.bold,
fontSize: 20,
letterSpacing: -0.02,
color:Colors.black,
),
),
)
),),
);
}
}
import 'package:flutter/material.dart';
import './number.dart';
import'./image.dart';
import './button.dart';
void main() {
runApp(Main());
}
class Main extends StatelessWidget {
@override
Widget build(BuildContext context){
return MaterialApp(
title: 'Main',
home: Scaffold(
body: Container(
child: Stack(
children:<Widget> [
image(context),
Number(),
button("Start",412,45),
],
),
),
),
);
}
}
然后像这样调用该方法:
class Button {
double left;
double top;
String text;
Widget button(this.text,this.top,this.left){
return Positioned(
left:left,
top: top,
child:Container(
height: 54,
width: 157,
color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(49))
),
child: Center(
child: Text(text,
style: TextStyle(
fontFamily: 'MontserratAlternates',
fontStyle: FontStyle.normal,
fontWeight: FontWeight.bold,
fontSize: 20,
letterSpacing: -0.02,
color:Colors.black,
),
),
)
),),
);
}
}
import 'package:flutter/material.dart';
import './number.dart';
import'./image.dart';
import './button.dart';
void main() {
runApp(Main());
}
class Main extends StatelessWidget {
@override
Widget build(BuildContext context){
return MaterialApp(
title: 'Main',
home: Scaffold(
body: Container(
child: Stack(
children:<Widget> [
image(context),
Number(),
button("Start",412,45),
],
),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“./number.dart”;
导入“/image.dart”;
导入“./button.dart”;
void main(){
runApp(Main());
}
类Main扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:"主要",,
家:脚手架(
主体:容器(
子:堆栈(
儿童:[
图像(上下文),
数字(),
按钮(“开始”,412,45),
],
),
),
),
);
}
}
我将更改您的按钮类,使其看起来更像这样:
class Button {
double left;
double top;
String text;
Widget button(this.text,this.top,this.left){
return Positioned(
left:left,
top: top,
child:Container(
height: 54,
width: 157,
color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(49))
),
child: Center(
child: Text(text,
style: TextStyle(
fontFamily: 'MontserratAlternates',
fontStyle: FontStyle.normal,
fontWeight: FontWeight.bold,
fontSize: 20,
letterSpacing: -0.02,
color:Colors.black,
),
),
)
),),
);
}
}
import 'package:flutter/material.dart';
import './number.dart';
import'./image.dart';
import './button.dart';
void main() {
runApp(Main());
}
class Main extends StatelessWidget {
@override
Widget build(BuildContext context){
return MaterialApp(
title: 'Main',
home: Scaffold(
body: Container(
child: Stack(
children:<Widget> [
image(context),
Number(),
button("Start",412,45),
],
),
),
),
);
}
}
然后像这样调用该方法:
class Button {
double left;
double top;
String text;
Widget button(this.text,this.top,this.left){
return Positioned(
left:left,
top: top,
child:Container(
height: 54,
width: 157,
color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(49))
),
child: Center(
child: Text(text,
style: TextStyle(
fontFamily: 'MontserratAlternates',
fontStyle: FontStyle.normal,
fontWeight: FontWeight.bold,
fontSize: 20,
letterSpacing: -0.02,
color:Colors.black,
),
),
)
),),
);
}
}
import 'package:flutter/material.dart';
import './number.dart';
import'./image.dart';
import './button.dart';
void main() {
runApp(Main());
}
class Main extends StatelessWidget {
@override
Widget build(BuildContext context){
return MaterialApp(
title: 'Main',
home: Scaffold(
body: Container(
child: Stack(
children:<Widget> [
image(context),
Number(),
button("Start",412,45),
],
),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“./number.dart”;
导入“/image.dart”;
导入“./button.dart”;
void main(){
runApp(Main());
}
类Main扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:"主要",,
家:脚手架(
主体:容器(
子:堆栈(
儿童:[
图像(上下文),
数字(),
按钮(“开始”,412,45),
],
),
),
),
);
}
}
您的自定义小部件应继承自StatefulWidget或无状态Widget。通过扩展这两个类中的任何一个,flatter将把您的类识别为一个小部件
class Button extends StatelessWidget {
final double left;
final double top;
final String text;
Button(this.text, this.top, this.left);
@override
Widget build(BuildContext context) {
return Positioned(
left: left,
top: top,
child: Container(
height: 54,
width: 157,
color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(49))),
child: Center(
child: Text(
text,
style: TextStyle(
fontFamily: 'MontserratAlternates',
fontStyle: FontStyle.normal,
fontWeight: FontWeight.bold,
fontSize: 20,
letterSpacing: -0.02,
color: Colors.black,
),
),
),
),
),
);
}
}
否则,如果要使用按钮
函数执行此操作,则需要在创建按钮
后调用该函数
import 'package:flutter/material.dart';
import './number.dart';
import './image.dart';
import './button.dart';
void main() {
runApp(Main());
}
class Main extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Main',
home: Scaffold(
body: Container(
child: Stack(
children: <Widget>[
image(context),
Number(),
Button("Start", 412, 45).button(),
],
),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“./number.dart”;
导入“/image.dart”;
导入“./button.dart”;
void main(){
runApp(Main());
}
类Main扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:"主要",,
家:脚手架(
主体:容器(
子:堆栈(
儿童:[
图像(上下文),
数字(),
按钮(“开始”,412,45)。按钮(),
],
),
),
),
);
}
}
您的自定义小部件应继承自StatefulWidget或无状态Widget。通过扩展这两个类中的任何一个,flatter将把您的类识别为一个小部件
class Button extends StatelessWidget {
final double left;
final double top;
final String text;
Button(this.text, this.top, this.left);
@override
Widget build(BuildContext context) {
return Positioned(
left: left,
top: top,
child: Container(
height: 54,
width: 157,
color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(49))),
child: Center(
child: Text(
text,
style: TextStyle(
fontFamily: 'MontserratAlternates',
fontStyle: FontStyle.normal,
fontWeight: FontWeight.bold,
fontSize: 20,
letterSpacing: -0.02,
color: Colors.black,
),
),
),
),
),
);
}
}
否则,如果要使用按钮
函数执行此操作,则需要在创建按钮
后调用该函数
import 'package:flutter/material.dart';
import './number.dart';
import './image.dart';
import './button.dart';
void main() {
runApp(Main());
}
class Main extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Main',
home: Scaffold(
body: Container(
child: Stack(
children: <Widget>[
image(context),
Number(),
Button("Start", 412, 45).button(),
],
),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“./number.dart”;
导入“/image.dart”;
导入“./button.dart”;
void main(){
runApp(Main());
}
类Main扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:"主要",,
家:脚手架(
主体:容器(
子:堆栈(
儿童:[
图像(上下文),
数字(),
按钮(“开始”,412,45)。按钮(),
],
),
),
),
);
}
}
谢谢Alex,但我现在遇到了不同的错误。**:没有为类型“Main”定义方法“button”。尝试将名称更正为现有方法的名称,或定义名为“button”的方法**尝试将小部件按钮(this.text,this.top,this.left)
更改为小部件按钮(this.text,this.top,this.left)
并调用按钮(“开始”,412,45)谢谢Alex,但我现在遇到了不同的错误。**:没有为类型“Main”定义方法“button”。请尝试将名称更正为现有方法的名称,或定义名为“button”的方法**尝试将小部件按钮(this.text,this.top,this.left)
更改为小部件按钮(this.text,this.top,this.left)
和调用按钮(“Start”,412,45)正如上面所说的,您的类按钮不会扩展/实现小部件,您应该让您的按钮扩展一个无状态小部件,并用您的命令覆盖构建方法。为什么?这些逻辑是什么?为什么我不做一个没有无状态小部件的类呢?如果你想使用你的类,它应该是Button(“Start”,412,45)。Button()在子列表中,它是有效的,也不是真的错,但是无状态小部件/StatefulWidget是你可以用来实现你想要的东西的基本小部件对象,正如它所说的,你的类按钮没有扩展/实现小部件,你应该让你的按钮扩展一个无状态小部件,并用你的widgetwhy覆盖构建方法?这些逻辑是什么?为什么我不做一个没有无状态小部件的类呢?如果你想使用你的类,它应该是Button(“Start”,412,45)。Button()在子列表中,它是有效的,也不是真的错,但是无状态小部件/StatefulWidget是你可以用来实现你想要的基本小部件对象