【问题标题】:Missing concrete implementation of statelessWidget.build缺少 statelessWidget.build 的具体实现
【发布时间】:2021-06-22 06:26:12
【问题描述】:

我在 Dart 中收到此错误:“缺少“stateless-Widget.build”的具体实现。 有谁知道这个错误是什么意思? 如何解决? 我能做些什么来防止编译器抛出 在以下代码上出现以下警告?这是因为我使用了 getter 方法吗 因为这两个错误也发生了

 child: Image.network(
                    imageUrl,         //undefined name imageUrl
                    height: 250,
                    width: double.infinity,
                    fit: BoxFit.cover,
                  ),
                ),

child: Text(
                      title,                         //undefined name title
                      style: TextStyle(
                        fontSize: 26,
                        color: Colors.white,
                      ),
                      softWrap: true,
                      overflow: TextOverflow.fade,
                    ),

代码:

import 'package:dishes_app/models/meal.dart';
import 'package:flutter/material.dart';

class MealItem extends StatelessWidget {     //error
  final String title;
  final String imageUrl;
  final int duration;
  final Complexity complexity;
  final Affordability affordability;

  MealItem({
    required this.title,
    required this.imageUrl,
    required this.duration,
    required this.complexity,
    required this.affordability,
  });



  String get complexityText {
    switch (complexity) {
      case Complexity.Simple:
        return 'Simple';
        break;
      case Complexity.Challenging:
        return 'Challenging';
        break;
      case Complexity.Hard:
        return 'Hard';
        break;
      default:
        return 'Unknown';
    }
  }
    String get affordabilityText {
    switch (affordability) {
      case Affordability.Affordable:
        return 'Affordable';
        break;
      case Affordability.Pricey:
        return 'Pricey';
        break;
      case Affordability.Luxurious:
        return 'Expensive';
        break;
      default:
        return 'Unknown';
    }
  }


  
  }

  void selectmeal() {}

  
  

  @override
  Widget build(BuildContext context) {
    return InkWell(
      onTap: selectmeal,
      child: Card(
        shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
        elevation: 4,
        margin: EdgeInsets.all(10),
        child: Column(
          children: [
            Stack(
              children: [
                ClipRRect(
                  borderRadius: BorderRadius.only(
                    topLeft: Radius.circular(15),
                    topRight: Radius.circular(15),
                  ),
                  child: Image.network(
                    imageUrl,
                    height: 250,
                    width: double.infinity,
                    fit: BoxFit.cover,
                  ),
                ),
                Positioned(
                  bottom: 20,
                  right: 20,
                  child: Container(
                    width: 300,
                    color: Colors.black54,
                    padding: EdgeInsets.symmetric(vertical: 5, horizontal: 20),
                    child: Text(
                      title,
                      style: TextStyle(
                        fontSize: 26,
                        color: Colors.white,
                      ),
                      softWrap: true,
                      overflow: TextOverflow.fade,
                    ),
                  ),
                ),
              ],
            ),
            Padding(
              padding: const EdgeInsets.all(20.0),
              child: Row(
                children: [
                  Row(
                    children: [
                      Icon(Icons.schedule),
                      SizedBox(width: 6),
                      Text('$duration min'),
                    ],
                  ),
                  Row(
                    children: [
                      Icon(Icons.work),
                      SizedBox(width: 6),
                      Text('complexityText'),
                    ],
                  ),
                  Row(
                    children: [
                      Icon(Icons.attach_money),
                      SizedBox(width: 6),
                      Text('affordabilityText'),
                    ],
                  ),
                  
                ],
                
              ),
            ),
          ],
        ),
      ),
    );
  }
}

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您刚刚在 override 构建方法之前关闭了 MealItem。只需删除大括号或尝试以下代码支持。

    class MealItem extends StatelessWidget {
      //error
      final String title;
      final String imageUrl;
      final int duration;
      final Complexity complexity;
      final Affordability affordability;
    
      MealItem({
        required this.title,
        required this.imageUrl,
        required this.duration,
        required this.complexity,
        required this.affordability,
      });
    
      String get complexityText {
        switch (complexity) {
          case Complexity.Simple:
            return 'Simple';
            break;
          case Complexity.Challenging:
            return 'Challenging';
            break;
          case Complexity.Hard:
            return 'Hard';
            break;
          default:
            return 'Unknown';
        }
      }
    
      String get affordabilityText {
        switch (affordability) {
          case Affordability.Affordable:
            return 'Affordable';
            break;
          case Affordability.Pricey:
            return 'Pricey';
            break;
          case Affordability.Luxurious:
            return 'Expensive';
            break;
          default:
            return 'Unknown';
        }
      }
    
      void selectmeal() {}
    
      @override
      Widget build(BuildContext context) {
        return InkWell(
          onTap: selectmeal,
          child: Card(
            shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
            elevation: 4,
            margin: EdgeInsets.all(10),
            child: Column(
              children: [
                Stack(
                  children: [
                    ClipRRect(
                      borderRadius: BorderRadius.only(
                        topLeft: Radius.circular(15),
                        topRight: Radius.circular(15),
                      ),
                      child: Image.network(
                        imageUrl,
                        height: 250,
                        width: double.infinity,
                        fit: BoxFit.cover,
                      ),
                    ),
                    Positioned(
                      bottom: 20,
                      right: 20,
                      child: Container(
                        width: 300,
                        color: Colors.black54,
                        padding: EdgeInsets.symmetric(vertical: 5, horizontal: 20),
                        child: Text(
                          title,
                          style: TextStyle(
                            fontSize: 26,
                            color: Colors.white,
                          ),
                          softWrap: true,
                          overflow: TextOverflow.fade,
                        ),
                      ),
                    ),
                  ],
                ),
                Padding(
                  padding: const EdgeInsets.all(20.0),
                  child: Row(
                    children: [
                      Row(
                        children: [
                          Icon(Icons.schedule),
                          SizedBox(width: 6),
                          Text('$duration min'),
                        ],
                      ),
                      Row(
                        children: [
                          Icon(Icons.work),
                          SizedBox(width: 6),
                          Text('complexityText'),
                        ],
                      ),
                      Row(
                        children: [
                          Icon(Icons.attach_money),
                          SizedBox(width: 6),
                          Text('affordabilityText'),
                        ],
                      ),
                    ],
                  ),
                ),
              ],
            ),
          ),
        );
      }
    }
    
    

    【讨论】:

      【解决方案2】:

      你有一个备用的}在这里

          String get affordabilityText {
          switch (affordability) {
            case Affordability.Affordable:
              return 'Affordable';
              break;
            case Affordability.Pricey:
              return 'Pricey';
              break;
            case Affordability.Luxurious:
              return 'Expensive';
              break;
            default:
              return 'Unknown';
          }
        }
      
      
        
       }//HERE
      

      【讨论】:

        猜你喜欢
        • 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
        相关资源
        最近更新 更多