Я учусь трепетать и пытаюсь сделать приложение для заметок и жестко кодировать 3 заметки, используя унаследованный виджет и список карт. Проблема в том, что я получаю эту ошибку, когда пытаюсь запустить приложение до сих пор: I/flutter (32083): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (32083): The following NoSuchMethodError was thrown building HomeScreen(dirty, state:
I/flutter (32083): _HomeScreenState#050b1):
I/flutter (32083): The getter 'notes' was called on null.
I/flutter (32083): Receiver: null
I/flutter (32083): Tried calling: notes
I/flutter (32083):
Это код на данный момент:
main.dart:
import 'package:flutter/material.dart';
import 'home_screen.dart';
import 'note_inherited_widget.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return NoteInheritedWidget(
MaterialApp(
home: HomeScreen(),
theme: ThemeData(
primaryColor: Colors.deepOrange, accentColor: Colors.deepPurple),
),
);
}
}
home_screen.dart
import 'package:flutter/material.dart';
import 'package:simple_notes/note_inherited_widget.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final myController = TextEditingController();
@override
void dispose() {
// Clean up the controller when the widget is disposed.
myController.dispose();
super.dispose();
}
List<Map<String, String>> get notes => NoteInheritedWidget.of(context).notes;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Simple Notes'),
centerTitle: true,
),
body: ListView.builder(itemBuilder: (context, index) {
return Card(
child: Column(
children: <Widget>[
NoteTitle(notes[index]['title']),
NoteText(notes[index]['text'])],
),
);
},
itemCount: notes.length,
),
bottomNavigationBar: (FlatButton(
onPressed: () {
showMyDialog(context);
},
child: Text('Add note'))));
}
Future<void> showMyDialog(
BuildContext context,
) {
return showDialog<void>(
context: context,
builder: (BuildContext context) {
return AlertDialog(
content: TextField(),
actions: <Widget>[
new FlatButton(
onPressed: () => Navigator.pop(context), child: Text('Save'))
],
);
});
}
}
class NoteTitle extends StatelessWidget {
final String title;
NoteTitle(this.title);
@override
Widget build(BuildContext context) {
return Text(
title,
style: TextStyle(
fontSize: 25,
fontWeight: FontWeight.bold
),
);
}
}
class NoteText extends StatelessWidget {
final String text;
NoteText(this.text);
@override
Widget build(BuildContext context) {
return Text(
text,
style: TextStyle(
color: Colors.grey.shade600,
),
maxLines: 2,
overflow: TextOverflow.ellipsis,
);
}
}
note_inherited_widget.dart
import 'package:flutter/material.dart';
class NoteInheritedWidget extends InheritedWidget {
final notes = [
{
'title': 'My first title',
'text': 'My first text'
},
{
'title': 'My second title',
'text': 'My second text'
},
{
'title': 'My third title',
'text': 'My third text'
}
];
NoteInheritedWidget(Widget child) : super(child: child);
bool updateShouldNotify(NoteInheritedWidget oldwidget) => oldwidget.notes != notes;
static NoteInheritedWidget of(BuildContext context) =>
context.dependOnInheritedWidgetOfExactType(aspect: NoteInheritedWidget) as NoteInheritedWidget;
}
У меня также были проблемы при попытке реализовать метод унаследованных виджетов, я думаю, что там могут быть ошибки, которые я не понимаю , Так что, если кто-нибудь из вас, ребята, мог бы помочь мне с этим, это было бы ужасно c. @ {11488366}
Заранее спасибо!