我是Flutter和Dart的新手,只是想了解新知识。在尝试设置编写简单todoApp的第一步时,出现了一个问题。
如何传递方法以从之前未在MaterialApp主体中初始化的StatefullWidget调用floatActionButton onPresset方法?
这是我的代码:
import 'package:flutter/material.dart';
void main() => runApp(new MaterialApp(
title: 'SchePP',
home: Scaffold(
appBar: AppBar(
title: Text('SchePP'),
),
body: SchePP(),
floatingActionButton: FloatingActionButton(
onPressed: () => ,
tooltip: 'Add new log',
child: Icon(Icons.add),
),
),
));
class SchePP extends StatefulWidget {
@override
_SchePPState createState() => _SchePPState();
}
class _SchePPState extends State<SchePP> {
List<String> listOfThings = ['Some thing done', 'Some other one'];
void addThingToList() {
this.listOfThings.add('New Thing to be done');
}
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: listOfThings.length,
itemBuilder: (BuildContext context, int index) {
return new Text(listOfThings[index]);
});
}
}
要指定我要将addThingToList方法从_SchePPState传递给onPressed。
感谢您的建议:)
使用全局访问,就像main()具有全局访问一样
import 'package:flutter/material.dart';
List<String> listOfThings = ['Some thing done', 'Some other one'];
void addThingToList() {
this.listOfThings.add('New Thing to be done');
}
void main() => runApp(new MaterialApp(
title: 'SchePP',
home: Scaffold(
appBar: AppBar(
title: Text('SchePP'),
),
body: SchePP(),
floatingActionButton: FloatingActionButton(
onPressed: () => addThingToList(),
tooltip: 'Add new log',
child: Icon(Icons.add),
),
),
));
class SchePP extends StatefulWidget {
@override
_SchePPState createState() => _SchePPState();
}
class _SchePPState extends State<SchePP> {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: listOfThings.length,
itemBuilder: (BuildContext context, int index) {
return new Text(listOfThings[index]);
});
}
}