как мне решить ошибку «в инициализаторах доступен только статический элемент»

#flutter

#flutter

Вопрос:

попытка передать идентификатор статической функции fetchByid

пожалуйста, я не могу получить доступ к конечному значению id, есть ли способ получить доступ к значению, это код пожалуйста, я не могу получить доступ к конечному значению id, есть ли способ получить доступ к значению, это код `

 import 'package:flutter/material.dart';
import 'package:learning_system/models/restaurant.dart';
import '../../models/restaurant_page_header.dart';

class RestaurantScreen extends StatefulWidget {
  final int id;
  RestaurantScreen(this.id);
  // Restaurant rest = Restaurant.fetchById(id);

  @override
  _RestaurantScreenState createState() => _RestaurantScreenState();
}

class _RestaurantScreenState extends State<RestaurantScreen> {
  Restaurant rest = Restaurant.fetchById(widget.id);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: CustomScrollView(
        slivers: <Widget>[
          SliverPersistentHeader(
            pinned: true,
            delegate: RestaurantPageHeader(
                maxExtent: 270.0, minExtent: 85.0, rest: rest),
          ),
          SliverList(
            delegate: SliverChildBuilderDelegate(
              (context, index) => ListTile(
                
                title: Text(rest.menu[index].foodName),
                subtitle: Text(rest.menu[index].supliments),
                trailing: Image.asset(rest.restImageUrl)
              ),
              childCount: rest.menu.length
            ),
          )
        ],
      ),
    );
  }
}
  

`

Комментарии:

1. Пожалуйста, не предоставляйте свой код в формате изображения. Можете ли вы предоставить это в текстовой версии?

Ответ №1:

Вы можете выполнить rest = Restaurant.fetchBy(widget.id); в initState()
фрагмент кода

 class RestaurantScreen extends StatefulWidget {
  final int id;

  RestaurantScreen(this.id);
  @override
  _RestaurantScreenState createState() => _RestaurantScreenState();
}

class _RestaurantScreenState extends State<RestaurantScreen> {
  Restaurant rest;

  @override
  void initState() {
    rest = Restaurant.fetchBy(widget.id);
    super.initState();
  }