Решение на самом деле одно и то же: сделать StatefulWidget
class Foo extends StatefulWidget {
@override
_FooState createState() => _FooState();
}
class _FooState extends State<Foo> {
Stream<QuerySnapshot> stream;
@override
void initState() {
super.initState();
stream = Firestore.instance.collection('books').snapshots();
}
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: stream,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
// do something with books
},
);
}
}
Отредактировано для добавления информации о Файловом API
Поскольку я первоначально написал этот ответ, Файловый API был предложен в качестве стандарта и реализован в большинстве браузеров (начиная с IE 10, в который добавлена поддержка API-интерфейса FileReader
, описанного здесь, хотя еще не было File
API). API немного сложнее, чем более старый API Mozilla, поскольку он разработан для поддержки асинхронного чтения файлов, лучшей поддержки двоичных файлов и декодирования различных кодировок текста. имеется некоторая документация, доступная в Mozilla Developer Network , а также различные примеры в Интернете. Вы могли бы использовать его следующим образом:
var file = document.getElementById("fileForUpload").files[0];
if (file) {
var reader = new FileReader();
reader.readAsText(file, "UTF-8");
reader.onload = function (evt) {
document.getElementById("fileContents").innerHTML = evt.target.result;
}
reader.onerror = function (evt) {
document.getElementById("fileContents").innerHTML = "error reading file";
}
}
Оригинальный ответ
Похоже, что нет способа сделать это в WebKit (например, Safari и Chrome). Единственными ключами, которые имеет объект File , являются fileName
и fileSize
. Согласно сообщению коммита для поддержки File и FileList, они основаны на объекте файла Mozilla , но, похоже, они поддерживают только подмножество функций.
Если бы вы Как бы изменить это, вы всегда можете отправить патч в проект WebKit. Другой возможностью было бы предложить API Mozilla для включения в HTML 5 ; рассылка WHATWG , вероятно, является лучшим местом для этого. Если вы сделаете это, то, скорее всего, будет кросс-браузерный способ сделать это, по крайней мере, через пару лет. Конечно,