我正在学习颤振并尝试使用继承的小部件和地图列表制作笔记应用程序和硬编码 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):
这是到目前为止的代码:
主要飞镖:
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;
}
我在尝试实现继承的小部件方法时也遇到了问题,我认为那里可能存在我不理解的错误。因此,如果你们中的任何人可以帮助我解决这个问题,那就太好了。@{11488366}
先感谢您!