отсутствует конкретная реализация state.build - PullRequest
0 голосов
/ 04 августа 2020

Я получаю эту ошибку в Dart: "Отсутствует конкретная реализация" state.build ""

Первый метод следующий:

class MyHomePage extends StatefulWidget {
  // String titleInput;
  // String amountInput;
  @override
  MyHomePageState createState() => MyHomePageState();
}

class MyHomePageState extends State<MyHomePage> {
  final List<Transaction> _userTransactions = [
    // Transaction(
    //   id: "t1",
    //   title: "New Shoes",
    //   amount: 69.99,
    //   date: DateTime.now(),
    // ),
    // Transaction(
    //   id: "t2",
    //   title: "Weekly Groceries",
    //   amount: 16.53,
    //   date: DateTime.now(),
    // ),
  ];

Кто-нибудь знает, что это за ошибка средства и как решить?

Спасибо.

Ответы [ 3 ]

1 голос
/ 04 августа 2020

Вам необходимо добавить метод build к State вашего виджета, этот метод описывает часть пользовательского интерфейса, представленную вашим виджетом , например (добавьте это в MyHomePageState)

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child:
            Container(
              height: 200,
              width: 100,
              color:  Colors.yellow,
        ),
      ),
    );
  }
0 голосов
/ 04 августа 2020

Перейдите к определению класса State<T> и посмотрите, что такое абстрактные методы. Вы найдете метод build() как единственный абстрактный метод, т.е. метод без тела. Поэтому, когда yu наследуются от State<MyHomePage>, вы должны переопределить build() и дать тело; в основном вы создадите свой Widgets внутри метода build().

Итак, чтобы исправить ошибку, добавьте в свой класс следующий код:

class MyHomePageState extends State<MyHomePage> {
   @override
   Widget build(BuildContext context) {
      return Scaffold( // Your Widget
         ...
      );
   }
}
0 голосов
/ 04 августа 2020

Все Stateful widgets и Stateless widgets должны иметь метод build.

@override
Widget build(BuildContext context) {
    return Container(
       ...
    );
}

Если вы хотите использовать его без build, не расширяйте класс с помощью State, используйте его как

class YourClassName {
}
...