是Flutter开发的新手,这可能是一个幼稚的问题,但是我遵循的是关于flutter dev site的初学者教程,并且我的列表视图没有显示。我已经更改了一些类/函数名称,并将代码放在了不同的文件中,但是不确定此处出了什么问题,这应该是一个无限量的随机单词列表。
这是完整的代码:
//File name: main.dart
import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart';
import 'package:flutter_app_as/StatefulWidgetStates.dart';
class StatefulRandomWordsWidget extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return RandomWordsState();
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
var wordWidget = StatefulRandomWordsWidget();
return MaterialApp(
title: 'Useless Title',
home: Scaffold(
appBar: AppBar(title: Text('Welcome to Flutter')),
body: wordWidget));
}
}
void main() {
runApp(MyApp());
}
和
//File name: StatefulWidgetStates.dart
import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart';
import 'package:flutter_app_as/main.dart';
class RandomWordsState extends State<StatefulRandomWordsWidget> {
final dataList = <WordPair>[];
@override
Widget build(BuildContext context) {
return getListView();
}
Widget getListView() {
ListView listViewWidget = ListView.builder(
itemCount: dataList.length,
padding: EdgeInsets.all(8.0),
itemBuilder: (context, pos) {
if (pos.isOdd) {
return Divider();
}
else {
final index = pos ~/ 2;
if (index >= dataList.length) {
List<WordPair> pairs=generateWordPairs().take(10);
dataList.addAll(pairs);
}
WordPair childData = dataList[index];
return ListTile(title: Text(childData.asCamelCase, style: TextStyle(fontSize: 12.0)));
}
});
return listViewWidget;
}
}
我也不了解这个final index = pos ~/ 2;
逻辑的含义。官方文档说:
表达式i〜/ 2将i除以2,然后返回整数结果。例如:1、2、3、4、5变为0、1、1、2、2。这将计算ListView中的单词配对的实际数量,减去分隔器小部件。
但是我猜错了。
答案 0 :(得分:1)
请记住,在使用StateFul小部件时,您需要告诉框架该小部件中的某些状态(日期)已更改,需要对其进行重建。因此,当您将事物添加到te列表时,状态会发生变化,并且需要重新构建它。您可以通过调用setState((){
});
方法来告知要重建的框架。
示例:
List<WordPair> pairs = generateWordPairs().take(10);
dataList.addAll(pairs);
setState(() {});