You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中实例化EventList类报错:需为eventList添加方法体

问题

我想要创建一个包含带编号事件列表的EventList类,并在另一个类中使用它。代码如下:

import 'package:flutter/material.dart';

// a list of events indexed by number
class EventList{
  Map<int, String> event_list = {};

  EventList(){
    event_list[0] = "Hello!";
  }
}

但在主类(_homeState)中尝试通过EventList eventList();实例化时,触发错误:

error: 'eventList' must have a method body because '_homeState' isn't abstract. (concrete_class_with_abstract_member at [citadel_test] lib\pages\home.dart:12)

我尝试将构造函数改为带可选颜色参数的形式,仍出现相同错误。

解决方法

你写的EventList eventList();是在类里声明了一个没有方法体的方法,而非实例化EventList对象,这才是错误的根源。正确的实例化方式分两种场景:

1. 作为类成员变量初始化

如果要把eventList作为_homeState的成员变量,直接赋值初始化即可:

class _homeState extends State<Home> {
  // 直接创建EventList实例
  EventList eventList = EventList();

  @override
  Widget build(BuildContext context) {
    // 使用实例中的数据
    return Scaffold(
      body: Text(eventList.event_list[0] ?? ""),
    );
  }
}

2. 在方法内部临时实例化

如果仅在某个方法内使用该实例,可在方法内部创建:

class _homeState extends State<Home> {
  @override
  Widget build(BuildContext context) {
    // 在方法内创建实例
    EventList eventList = EventList();
    return Scaffold(
      body: Text(eventList.event_list[0] ?? ""),
    );
  }
}

另外,你的EventList类可以用初始化列表简化构造逻辑:

class EventList{
  Map<int, String> event_list;

  // 用初始化列表直接初始化map并添加元素
  EventList() : event_list = {0: "Hello!"};
}

内容的提问来源于stack exchange,提问作者easythrees

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:57:19