Метод useEffect не определен для типа

Я новичок в флаттере и хочу реализовать хук useEffect.

Вот мой виджет:

import 'dart:developer';

import 'package:flutter/material.dart';

class MarketRunnerChart extends StatefulWidget {
  const MarketRunnerChart({Key? key}) : super(key: key);

  @override
  State<MarketRunnerChart> createState() => _MarketRunnerChartState();
}

class _MarketRunnerChartState extends State<MarketRunnerChart> {
  @override
  Widget build(BuildContext context) {
    useEffect(() {
      log('okok');
    }, []);

    return Text("Some text");
  }
}

Но у меня ошибка The method 'useEffect' isn't defined for the type '_MarketRunnerChartState'. Когда я удаляю useEffect хук из build функции и помещаю его прямо в класс, я получаю ошибку 'useEffect' must have a method body because '_MarketRunnerChartState' isn't abstract. Я привык работать с React, но сейчас с флаттером не могу понять, как реализовать этот хук.

Как я должен это сделать?

Импортируйте эту библиотеку pub.dev/packages/flutter_hooks, и ваш виджет должен расширяться HookWidget вместо StatefulWidget.

Kasymbek R. Tashbaev 21.11.2022 04:52

Хороший туториал по хукам: medium.com/flutter-community/flutter-hooks-7754df814995

Ruchit 21.11.2022 05:05
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
1
2
54
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

попробуйте добавить

import 'package:flutter_hooks/flutter_hooks.dart';

поверх вашего файла класса

импортные флаттер-крючки

import 'package:flutter_hooks/flutter_hooks.dart';

class MarketRunnerChart extends StatefulWidget {
    const MarketRunnerChart({Key? key}) : super(key: key);

    @override
    State<MarketRunnerChart> createState() => _MarketRunnerChartState();
}

class _MarketRunnerChartState extends State<MarketRunnerChart> {
    useEffect(() {
        print('your log');
    }, []);

    @override
    Widget build(BuildContext context) {

        return Text("Some text");
    }
}

Вы можете следовать примеру документа, импортировать flutter_hooks, расширять HookWidget.

import 'package:flutter_hooks/flutter_hooks.dart';

class Example extends HookWidget {
  const Example({Key? key, })
      : super(key: key);

  @override
  Widget build(BuildContext context) {
     //your variable/instance like to listen
    useEffect(() {
      log('okok');
    }, [...listenThisInstance...]);
    return Container();
  }
}

Подробнее о useEffect

Другие вопросы по теме