首先,我是一个完整的初学者(不仅在 dart/flutter 方面),而且在一般的编程方面。我目前正在开发一个聊天应用程序。
目标:当我在 ChatScreen 中选择图像时 - 类似于例如 WhatsApp - 它应该立即显示为消息(带有加载符号的占位符,当它上传到 Firestore 时)。
问题:一切正常,但有一个问题:当我通过 imagepicker 选择图像时,它已上传,但在聊天中显示为消息之前会有延迟。imagepicker -> 写入 Firestore -> Streambuilder (listView.builder)。
我的尝试:我正在使用 CachedNetworkImage,但不幸的是,它一直显示占位符(CircularProgressIndicator),而不是实际图像。如果我只是显示图像,一切正常(除了延迟)。
此外,我非常感谢一些使应用程序运行得更快/改进代码的想法;-)。
//Chat screen which lists all the chat messages, including _handleSubmitted and the _buildTextComposer
import 'dart:math';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_database/firebase_database.dart';
import 'package:intl/intl.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:transparent_image/transparent_image.dart';
import 'package:flutter_image/network.dart';
import 'package:flutter_native_image/flutter_native_image.dart';
final database = Firestore.instance
.collection('nachrichten')
.document('G5xlQHvb56ZqpWs7ojUV');
final reference = …Run Code Online (Sandbox Code Playgroud) 我正在使用带有 firebase 消息传递插件的 flutter 框架来启用推送通知。在调试模式下编译我的 Flutter 应用程序时,Firebase 消息传递在 iOS 上正常工作。我还没有在安卓上试过。但是当我在发布模式下编译时,没有出现推送通知。在 Firebase 中,我还没有填写 app-name 和 store-id,因为该应用程序尚未在 Apple AppStore 中发布。这可能是问题吗?
如果我使用 WillPopScope 用新路由覆盖 BackButton 行为,它工作正常。但是在 iOS 上,自动的“SwipeBack”手势不再起作用。如何在 iOS 上设置 SwipeBack 手势以将当前屏幕推送到具有“StartScreen”类的页面?
WillPopScope(onWillPop: (){
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => StartScreen(),
),
);
}
Run Code Online (Sandbox Code Playgroud) 知道如何在 Text() 小部件中仅使表情符号的字体大小变大吗?
问题是 Text() 小部件会自动解析表情符号。当然,我可以增加整体文本大小,但我希望文本保持相同的字体大小。
来自 Firestore,我在如何从 Firebase 实时数据库接收数据方面有些挣扎。我只想要从实时数据库加载的图像的漂亮网格视图。
Error: flutter: The following NoSuchMethodError was thrown building:
flutter: Class 'DataSnapshot' has no instance method '[]'.
flutter: Receiver: Instance of 'DataSnapshot'
Run Code Online (Sandbox Code Playgroud)
我猜它与索引有关。不知道如何在列表中正确映射它。
import 'package:cached_network_image/cached_network_image.dart';
import 'package:firebase_database/firebase_database.dart';
import 'package:flutter/material.dart';
class Test extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Container(
alignment: Alignment.center,
padding: const EdgeInsets.all(16.0),
child: new FutureBuilder(
future: FirebaseDatabase.instance
.reference()
.child('messages')
.child('1551276762582')
.orderByChild('messagetype')
.equalTo('1')
.once(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
if (snapshot.data != null) {
return new Column(
children: <Widget>[ …Run Code Online (Sandbox Code Playgroud) firebase firebase-realtime-database flutter google-cloud-firestore flutter-layout