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
相关产品推荐
相关产品推荐

