我有一个包含按钮的有状态小部件。我将用户点击的次数保存在一个名为“counter”的 int 变量中。
我有另一个小部件,它是我的主屏幕。我在那个屏幕上有一个文本。我需要动态显示此文本的点击次数。因此,当用户点击第一类上的按钮时,我在第二类上的文本必须更新。
将计数器变量从第一个小部件传递到第二个小部件的最佳方法是什么?
添加了一些代码
我的两个类都是有状态的小部件。所以,我像这样声明了 static int counter ;
class AppListView extends StatefulWidget {
static int counter;
@override
_AppListViewState createState() => _AppListViewState();
}
Run Code Online (Sandbox Code Playgroud)
现在我可以从其他班级到达柜台,但无法从自己的班级到达柜台。我的意思是我需要增加那部分的计数器,但它说未定义。
class _AppListViewState extends State<AppListView> {
@override
Widget build(BuildContext context) {
return FlatButton(
onPressed: (){
counter++ (can't reach counter here)
}
Run Code Online (Sandbox Code Playgroud) 我想在我的 firebase 查询中添加另一个条件。我想说 userID = xx 和 status = yy。有没有办法在同一个查询中做到这一点?
static Future<List<Ticket>> ticketDataStream(userID) async {
final databaseReference = Firestore.instance;
List<Ticket> tickets = List<Ticket>();
await for (var snapshot in databaseReference
.collection('bets')
.where('userID', isEqualTo: userID)
.snapshots()) {
for (var document in snapshot.documents) {
Ticket ticket = Ticket();
ticket.status = document.data['status'];
ticket.numOfMatches = document.data['numOfMatches'];
ticket.returnAmount = document.data['return'];
ticket.totalOdds = document.data['odds'];
ticket.dateTime = document.data['dateTime'].toDate();
ticket.betAmount = document.data['betAmount'];
ticket.ticketID = document.documentID;
tickets.add(ticket);
}
return tickets;
}
return null; //TODO: be sure that is not a …Run Code Online (Sandbox Code Playgroud) 我想要做什么 登录后,显示具有列表视图的主屏幕。此列表视图显示来自 API 的数据。因此,加载需要一点时间。我想在加载完成后渲染我的主屏幕,我的列表视图充满了数据。
我已经做了什么, 我有一个 api 帮助器类,可以执行 api 工作。它有一个静态方法,用于获取列表视图的数据并返回列表。这是我的 getFixtureData 方法。
static Future<List<Fixtures>> getFixtureData() async {
Map<String, String> queryParameters = {
'league': '78',
'next': '20',
};
http.Response response = await http.get(
getUrl('fixtures', queryParameters),
headers: requestHeaders,
);
print(response.body);
if (response.statusCode == 200) {
String data = response.body;
List<dynamic> result = jsonDecode(data)['response'];
for (int i = 0; i < result.length; i++) {
Fixtures fixture = Fixtures();
fixture.leagueID = jsonDecode(data)['response'][i]['league']['id'];
fixture.country = jsonDecode(data)['response'][i]['league']['country'];
fixture.leagueName = jsonDecode(data)['response'][i]['league']['name'];
fixture.fixtureID = jsonDecode(data)['response'][i]['fixture']['id'];
//get Odds to …Run Code Online (Sandbox Code Playgroud)