【问题标题】:missing concrete implementation of state.build缺少 state.build 的具体实现
【发布时间】:2020-08-04 12:07:07
【问题描述】:

我在 Dart 中遇到了这个错误: “缺少“state.build”的具体实现”

第一种方法如下:

class MyHomePage extends StatefulWidget {
  // String titleInput;
  // String amountInput;
  @override
  MyHomePageState createState() => MyHomePageState();
}

class MyHomePageState extends State<MyHomePage> {
  final List<Transaction> _userTransactions = [
    // Transaction(
    //   id: "t1",
    //   title: "New Shoes",
    //   amount: 69.99,
    //   date: DateTime.now(),
    // ),
    // Transaction(
    //   id: "t2",
    //   title: "Weekly Groceries",
    //   amount: 16.53,
    //   date: DateTime.now(),
    // ),
  ];

有谁知道这个错误是什么意思以及如何解决?

谢谢。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您需要在您的小部件的State 中添加一个build 方法,该方法描述了您的小部件所代表的用户界面部分,例如, (将此添加到MyHomePageState

      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Center(
            child:
                Container(
                  height: 200,
                  width: 100,
                  color:  Colors.yellow,
            ),
          ),
        );
      }
    

    【讨论】:

      【解决方案2】:

      检查 花括号,它关闭了 Widget build 方法所在的 class。你可能只是在错误的地方关闭了它。

      对我来说就是这样。

      因此,请确保您的构建方法位于包含类的大括号内

      class _LandingPageState extends State<LandingPage> {
          Widget build(BuildContext context) {
          ...
      }
      

      【讨论】:

        【解决方案3】:

        所有Stateful widgetsStateless widgets 都应该有build 方法。

        @override
        Widget build(BuildContext context) {
            return Container(
               ...
            );
        }
        

        如果你想在没有build 的情况下使用它,请不要使用State 扩展类,像这样使用它

        class YourClassName {
        }
        

        【讨论】:

          【解决方案4】:

          转到State&lt;T&gt; 类的定义,看看抽象方法是什么。您会发现 build() 方法是唯一的抽象方法,即没有主体的方法。所以当yu从State&lt;MyHomePage&gt;继承时,你必须覆盖build()并给出一个body;基本上你将在build() 方法中创建你的Widgets

          所以要修复错误,请将以下代码添加到您的类中:

          class MyHomePageState extends State<MyHomePage> {
             @override
             Widget build(BuildContext context) {
                return Scaffold( // Your Widget
                   ...
                );
             }
          }
          

          【讨论】:

            【解决方案5】:

            检查一下

            @override
            Widget build( Buildcontext context)
            { 
            return Container();
            }
            

            检查构建的拼写

            原因:当你用无状态或有状态小部件扩展你的类时,你使用覆盖方法来覆盖已经写在父 类中的 预定义方法,它是 州少/全班

            【讨论】:

              猜你喜欢
              • 2020-10-03
              • 1970-01-01
              • 2022-06-14
              • 2020-06-11
              • 2019-05-14
              • 2020-06-27
              • 2021-11-09
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多