Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振错误:元件类型';按钮';can';不能分配给列表类型';小部件';_Flutter_Dart_Widget_Syntax Error_Flutter Dependencies - Fatal编程技术网

Flutter 颤振错误:元件类型';按钮';can';不能分配给列表类型';小部件';

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

我不知道为什么我会给出这个错误。我在这里写了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,
   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是你可以用来实现你想要的基本小部件对象