Flutter 中缺少“State.Widget”的具体实现,即使以前不存在,请帮助我

问题描述 投票:0回答:1

我不确定为什么问题会出现在代码中,我尝试了多种修复,但没有任何效果,项目的其他部分也存在类似的问题。我不知道如何修复它,它已经在小部件中具有构建上下文,但我仍然不确定它缺少什么。

缺少“State.Widget”的具体实现。 尝试实现缺少的方法,或者使类成为abstract.dartnon_abstract_class_inherits_abstract_member _MonthDateRowState 类扩展了 State 包:study_sync/Pages/home.dart

class MonthDateRow extends StatefulWidget {
  @override
  State<MonthDateRow> createState() => _MonthDateRowState();
}

class _MonthDateRowState extends State<MonthDateRow> {
  late ApiService _apiService;
  late TokenStorageService _tokenStorageService;
  List<VideoModel>? _videos;
  bool _isLoading = true;
  String? _errorMessage;

  @override
  void initState() {
    super.initState();
    _tokenStorageService = TokenStorageService();
    _apiService = ApiService(
      'https://fe00-117-220-236-245.ngrok-free.app/api',
      _tokenStorageService,
    );
    _fetchData();
  }

  Future<void> _fetchData() async {
    setState(() => _isLoading = true);
    try {
      final token = await _tokenStorageService.getToken() ?? '';
      final fetchedVideos = await _apiService.fetchVideos(token);
      setState(() {
        _videos = fetchedVideos.cast<VideoModel>();
        _isLoading = false;
      });
    } catch (error) {
      setState(() {
        _isLoading = false;
        _errorMessage = error.toString();
      });
    }
  }

  List<DateTime> _getNextDates(int count) {
    return List.generate(
      count,
      (index) => DateTime.now().add(Duration(days: index)),
    );
  }

  
  Widget Build(BuildContext context) {
    if (_isLoading) {
      return _loadingWidget();
    } else if (_errorMessage != null) {
      return _errorWidget();
    } else if (_videos == null || _videos!.isEmpty) {
      return _emptyWidget();
    } else {
      return _videosWidget();
    }
  }

  Widget _loadingWidget() {
    return Scaffold(
      appBar: AppBar(title: Text('Scheduled Videos')),
      body: Center(child: CircularProgressIndicator()),
    );
  }

  Widget _errorWidget() {
    return Scaffold(
      appBar: AppBar(title: Text('Error')),
      body: Center(child: Text(_errorMessage!)),
    );
  }

  Widget _emptyWidget() {
    return Scaffold(
      appBar: AppBar(title: Text('Scheduled Videos')),
      body: Center(child: Text('No scheduled videos found')),
    );
  }

  Widget _videosWidget() {
    final dateList = _getNextDates(20);
    int videoIndex = 0;
    return Scaffold(
      appBar: AppBar(title: Text('Scheduled Videos')),
      body: ListView.builder(
        itemCount: dateList.length,
        itemBuilder: (context, index) {
          final date = dateList[index];
          final video = _videos![videoIndex % _videos!.length];
          videoIndex++;

          return Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: Text(
                  DateFormat('EEEE, MMMM d').format(date),
                  style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
                ),
              ),
              _buildScheduledVideo(context, video),
            ],
          );
        },
      ),
    );
  }

  Widget _buildScheduledVideo(BuildContext context, VideoModel video) {
    return Card(
      margin: EdgeInsets.only(bottom: 8),
      child: ListTile(
        leading: Icon(Icons.video_library),
        title: Text(
          video.title,
          style: TextStyle(fontWeight: FontWeight.bold),
        ),
        subtitle: Text(video.videoUrl),
        trailing: Text(DateFormat.jm().format(video.scheduledDate)),
      ),
    );
  }
}

请提出修复建议

flutter flutter-dependencies
1个回答
0
投票

您缺少抽象

build
方法的实现

这就是你所做的,但这不是构建方法。

  Widget Build(BuildContext context) {
    if (_isLoading) {
      return _loadingWidget();
    } else if (_errorMessage != null) {
      return _errorWidget();
    } else if (_videos == null || _videos!.isEmpty) {
      return _emptyWidget();
    } else {
      return _videosWidget();
    }
  }

修复

像这样修改方法签名

@override
Widget build(BuildContext context) {}

希望对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.