我正在尝试在我的应用中使用 Firebase Auth sendPasswordResetEmail() 调用。
在我的身份验证文件中,我声明以下内容:
Future<void> sendPasswordResetEmail(String email) async {
return _firebaseAuth.sendPasswordResetEmail(email: email);
}
Run Code Online (Sandbox Code Playgroud)
我将身份验证传递给我的表单小部件,该小部件接受此密码并在我提交后具有以下 onPressed 功能。
onPressed: () async {
var response = await checkEmail();
setState(() {
this._emailValidator = response;
});
if (_formKey.currentState.validate()) {
_formKey.currentState.save();
try {
await widget.auth
.sendPasswordResetEmail(_email);
} catch (e) {
print(e);
}
}
},
Run Code Online (Sandbox Code Playgroud)
使用正确的电子邮件运行后,我收到以下控制台消息:
“尝试调用:sendPasswordResetEmail("test@email.com")” 注意:我为此使用了真实的电子邮件。
我已经设置了 Firebase 电子邮件模板系统,但没有收到任何电子邮件。有谁知道我如何进一步解决这个问题或为什么我的电子邮件不起作用?
谢谢!
我正在尝试使用换行命令在文本中创建新行。从这个问题看来,这是不可能的:New Line Command (\n) Not Working With Firebase Firestore Database Strings
现在还是这样吗?假设是这样,Flutter 是否提供了与以下功能类似的任何方法来解决这个问题?
label.text = stringRecived.replacingOccurrences(of: "\n", with: "\n")
Run Code Online (Sandbox Code Playgroud)
*更多上下文:这是我输入数据的 Firestore 字符串的图片。

然后我使用未来的构建器从 Firestore 调用它,然后将字符串(在本例中为注释)传递给另一个小部件。
return new SocialFeedWidget(
filter: false,
articleID: document['article'],
article_header: document['article_title'],
userName: document['author'],
spectrumValue: document['spectrum_value'].toDouble(),
comment: document['comment'],
fullName: document['firstName'] + " " + document['lastName'],
user_id: document['user_id'],
postID: document.documentID,
posterID: userID,
);
}).toList(),
Run Code Online (Sandbox Code Playgroud)
在新的小部件中,我将它作为字符串传入并通过 Text 小部件提供,如下所示:
new Text(
comment,
style: new TextStyle(
color: Color.fromRGBO(74, 74, 74, 1.0),
fontSize: 13.0,
),
),
Run Code Online (Sandbox Code Playgroud)
我希望更新默认页面转换,以删除默认情况下发生的从左到右的页面转换,取而代之的是零转换。我已经看到了支持文档,允许创建 PageRouteBuilder 并设置零秒的持续时间,但我不确定如何为命名路由执行此操作。
例如,我希望能够调用并进行零转换:
Navigator.pushNamed(context, '/register');
如何更改默认值以使所有页面转换都为零转换?
我正在 Flutter 上构建一个移动应用程序,并将 Firebase 登录集成到该应用程序中。我还有一个在应用程序中调用的 Python Django REST API。我希望将 Firebase 与 REST API 集成,以便 Firebase 中的用户可以成为 API 的经过身份验证的用户(因此我可以创建令牌并标记 API 端点)。
有谁知道我可以使用的方法吗?新手程序员和 Firebase 新手,所以如果有更好的方法来做到这一点,请告诉我!感谢帮助。
我希望渲染一个不可移动的颤动滑块,这意味着我希望向滑块传递一个初始值,用户将无法纯粹为 UI 可视化而更改?
有没有人有任何将这个滑块锁定到位的经验?
谢谢您的帮助。
我无法将行与列左侧的文本对齐。
布局如下所示:
但是,我希望用户名(“Peter Jonathan”)和用户的句柄(“@pj”)与最左侧对齐。关于我如何做到这一点的任何建议?
这是我目前的代码:
class ProfilePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
elevation: 0.0,
// title: Text('Profile'),
),
body: new Container(
padding: EdgeInsets.fromLTRB(25.0, 0.0, 25.0, 10.0),
child: new Column(
children: <Widget>[
new Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
new Container(
width: 100.0,
height: 100.0,
child: new Center(
child: new Text(
"PJ",
style: new TextStyle(fontSize: 40.0),
),
),
decoration: BoxDecoration(
shape: BoxShape.circle,
border: new Border.all(color: Colors.purple),
),
),
new Column(
children: <Widget>[
new Row( …Run Code Online (Sandbox Code Playgroud) 我是 Flutter 和 Firebase 的新手,我正在尝试验证表单中的用户输入并针对 firebase 集合运行它。
我要求用户创建一个用户名,并希望验证我的 Firebase 目录中不存在现有用户名。
我从Check if Field Already Existing in Flutter Firestore 的讨论中得到了这个验证方法。我想为该方法提供一个名称,构建具有该名称的文档列表,并确认不存在。
Future<bool> doesNameAlreadyExist(String name) async {
final QuerySnapshot result = await Firestore.instance
.collection('user')
.where('user_id', isEqualTo: name)
.limit(1)
.getDocuments();
final List<DocumentSnapshot> documents = result.documents;
return documents.length == 1;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在文本表单字段的验证器中调用此方法,如下所示。
new TextFormField(
decoration: new InputDecoration(labelText: 'Username'),
validator: (value) => doesNameAlreadyExist(value) ? "Username already taken" : null,
onSaved: (value) => _username = value,
),
Run Code Online (Sandbox Code Playgroud)
但是,这会引发一个错误,即我必须为验证器提供静态 bool 类型。
我的问题:我如何(1)创建一个能够搜索 Firebase 的静态布尔方法或(2)如何通过异步调用获得相同的功能(理想情况下,无需构建另一个小部件)?
我正在尝试从Firestore数据库中的给定文档返回评论和文章字段。我利用将来的构建器通过ListTile返回此数据。
当我运行它时,在成功成功显示平铺之前,屏幕短暂变为红色,并呈现以下错误。错误是:构建函数返回null。有问题的小部件是:FutureBuilder构建函数绝不能返回null。要返回使建筑物小部件填充可用空间的空白空间,请返回“ new Container()”。要返回占用尽可能少空间的空白空间,请返回“ new Container(width:0.0,height:0.0)”。
这是我的代码:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class PostGetter extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new Scaffold(
body: new Container(
child: new FutureBuilder(
future: Firestore.instance
.collection('post')
.where('article', isEqualTo: 'lpquVtoRNsu0vBLjNByS')
.getDocuments(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
if (snapshot.data != null) {
return new Column(
children: <Widget>[
new Expanded(
child: new ListView(
children: snapshot.data.documents
.map<Widget>((DocumentSnapshot document) {
return new ListTile(
title: new Text(document['comment']),
subtitle: new Text(document['author']),
); …Run Code Online (Sandbox Code Playgroud) 我试图用这个函数返回文档列表的长度:
Future totalLikes(postID) async {
var respectsQuery = Firestore.instance
.collection('respects')
.where('postID', isEqualTo: postID);
respectsQuery.getDocuments().then((data) {
var totalEquals = data.documents.length;
return totalEquals;
});
}
Run Code Online (Sandbox Code Playgroud)
我在 void init 状态下初始化它(使用另一个函数调用:
void initState() {
totalLikes(postID).then((result) {
setState(() {
_totalRespects = result;
});
});
}
Run Code Online (Sandbox Code Playgroud)
但是,当它运行时,它最初返回一个空值,因为它没有时间完全完成。我试图在 Future 函数中的 Firestore 调用之前退出“等待”,但得到“仅等待期货”的编译错误。
任何人都可以帮助我理解如何在设置“_totalRespsects”状态之前等待此函数完全返回非空值?
谢谢!
我正在尝试构建用户可以滚动浏览的一系列帖子(例如 Twitter 或 Instagram 类型的帖子)。当他们滚动时,他们可以单击其中一篇文章并导航到新页面。当他们从该页面导航回来时,我希望他们保持在 ListView 中之前所在位置的同一位置。
问题
我当前无法阻止流小部件重建并返回到滚动位置。我知道解决这个问题的方法之一是包含一把钥匙;但是,我尝试将密钥包含在 ListView.builder 中,但没有成功。
问题 我应该将密钥放在哪里?我使用的密钥类型正确吗?
class Stream extends StatefulWidget {
Stream({Key key, this.user}) : super(key: key);
final User user;
@override
_StreamState createState() => new _StreamState(
user: user
);
}
class _StreamState extends State<Stream> {
_StreamState({this.user});
final User user;
Firestore _firestore = Firestore.instance;
List<DocumentSnapshot> _posts = [];
bool _loadingPosts = true;
int _per_page = 30;
DocumentSnapshot _lastPosts;
ScrollController _scrollController = ScrollController();
bool _gettingMorePosts = false;
bool _morePostsAvailable = true;
_getPosts() async {
Query …Run Code Online (Sandbox Code Playgroud)