隨著flutter的更新,語法似乎發生了變化。我試圖在官方網站上找到解決方案,但失敗了。
import 'package:flutter/material.dart';
import 'package:my_app1/model/model_member.dart';
class MainScreen extends StatefulWidget {
final Member member;
DetailScreen({this.member});
_DetailScreenState createState() => _DetailScreenState();
}
Error: The parameter 'member' can't have a value of 'null' because of its type 'Member', but the implicit default value is 'null'.
并且
Widget _buildBody(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection('member').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return LinearProgressIndicator();
return _buildList(context, snapshot.data.docs);
},
);
}
Error: Property 'docs' cannot be accessed on 'QuerySnapshot<Object?>?' because it is potentially null.
uj5u.com熱心網友回復:
嘗試這個:
StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance
.collection("member")
.snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> chatSnapshot) {
if (chatSnapshot.connectionState == ConnectionState.waiting) {
return Center(
child: Container(),
);
}
return ListView(
reverse: true,
controller: _controller,
physics: const BouncingScrollPhysics(),
children:
chatSnapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic> data =
document.data()! as Map<String, dynamic>;
return Text(data["name"]);
}).toList(),
);
},
),
uj5u.com熱心網友回復:
從 Flutter 1.0 到 2.0 的主要變化是Null safety. 所以它將確保該member欄位不為空。所以在前面添加 requiredmember應該可以解決問題
class MainScreen extends StatefulWidget {
final Member member;
DetailScreen({required this.member}); // <-- change this line
_DetailScreenState createState() => _DetailScreenState();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/486636.html
下一篇:Firebase參考
