我即将使用 firestore 创建一个 1 对 1 聊天应用程序。特点如下:
我认为我的Message模型类如下:
false)现在假设user1和user2进行了对话。我正在考虑chats通过以下方式为聊天创建一个单独的根集合():
chats(col) --> user1 --> chats(col) --> chatRoomId --> messages(col) --> messageId1
--> messageId2
--> messageId3
--> user2 --> chats(col) --> chatRoomId --> messages(col) --> messageId1
--> messageId2
--> messageId3
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于 - 将会为两个用户分别存储重复的数据,例如相同的消息。而且更新消息也会很麻烦,因为消息需要在两个位置都更新。
那么,牢记所有要求,什么是更好的结构呢?
我试图使用改型2来获取json对象响应。我使用了hashmap,因为键是动态的。这是我的回应课:
public class Countries {
private Map<String, Model> datas;
public Map<String, Model> getDatas() {
return datas;
}
}
Run Code Online (Sandbox Code Playgroud)
而Model类是:
public class Model {
@SerializedName("country_name")
private String country_name;
@SerializedName("continent_name")
private String continent_name;
public String getCountry_name() {
return country_name;
}
public String getContinent_name() {
return continent_name;
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试处理如下响应:
call.enqueue(new Callback<Countries>() {
@Override
public void onResponse(Call<Countries> call, Response<Countries> response) {
Map<String, Model> map = new HashMap<String, Model>();
map = response.body().getDatas();
for (String keys: map.keySet()) {
// myCode;
}
}
@Override …Run Code Online (Sandbox Code Playgroud) 我正在尝试打开带有当前位置的谷歌地图。为此,我使用有状态的小部件。但地图需要很长时间才能加载,有时甚至根本无法加载。这是因为Future函数(用于获取当前位置)还是我的实现错误?我正在使用google_maps_flutter地图插件。这是我的代码:
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: <Widget>[
FutureBuilder(
future: _getCurrentLocation(),
builder: (context, snapshot) {
if (snapshot.hasData) {
print("map loaded");
Placemark placemark = snapshot.data;
var json = placemark.toJson();
selectedLocation = TheLocation.fromJson(json);
_markers.add(
Marker(
markerId: MarkerId('homeMarker'),
position: LatLng(
selectedLocation.latitude, selectedLocation.longitude),
icon: BitmapDescriptor.defaultMarker,
infoWindow: InfoWindow(title: selectedLocation.name),
draggable: false,
),
);
return GoogleMap(
initialCameraPosition: CameraPosition(
target: LatLng(placemark.position.latitude,
placemark.position.longitude),
zoom: 18,
),
markers: _markers,
onMapCreated: onMapCreated,
onCameraMove: ((_position) => _updatePosition(_position)),
);
} else {
print("loading map"); …Run Code Online (Sandbox Code Playgroud) 不是每次都按“Ctrl + S”或“热加载”按钮,有没有办法在android studio中的代码更改时执行自动热重新加载?
在 VS code 中,我使用 github 帐户登录,但我不再具有访问权限。所以我需要完全取消github帐户与vs code的链接。我怎样才能做到这一点?我用的是ubuntu。
我正在尝试在旧的sqlite数据库表中添加新列。这些表是动态的。我的意思是,它们是在应用程序用户在应用程序中添加特定数据时创建的。
表名称具有类似的后缀。前缀取决于用户输入。现在,在android中,如何在不丢失先前数据的情况下在这些表中添加新列?
我需要color根据主题更改小部件。我有ThemeData明暗主题分开。现在是否可以添加自定义属性,ThemeData以便我可以根据主题更改小部件的颜色并使用该自定义属性?
我知道通过使用AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);夜间模式可以在一项活动中实施。但是我想要的是-设置中将提供一个选项,用于在应用程序的所有活动和片段中激活夜间模式。我怎样才能做到这一点?
我正在构建一个Flutter应用程序。Cloud firestore数据库结构如图所示。我想获取所有使用StreamBuilder. 我怎样才能做到这一点?到目前为止我已经尝试过这个:
Stream<List<PostModel>> jobs() {
return usersCollection.snapshots().map((snapshot) {
return snapshot.documents.map((doc) {
doc['posts'].map((docu) {
return PostModel.fromSnapshot(docu);
});
}).toList();
});
}
Run Code Online (Sandbox Code Playgroud)
我想从 vs 代码项目中隐藏自动生成的 dart 文件,例如.g.dart, .freezed.dart。怎么做?
我正在使用颤动。a 应该以哪种方式DateTime存储在 firestore 中,以便我可以根据DateTime. 应该转换成String其他的吗?这里完美的方法是什么?
我试图使用改造2来获取json响应.我的json响应如下所示:
[
0 : {
type : "video",
format : "mp4",
size : "10mb"
},
1 : {
type : "audio",
format : "mp3",
size : "10mb"
},
2 : {
type : "text",
format : "pdf",
size : "10mb"
}
]
Run Code Online (Sandbox Code Playgroud)
我的模型类应该怎么样?我无法理解,因为它有动态键.