我正在解决一个问题,我收到错误“对象在布局期间被赋予了无限大小”和“这可能意味着它是一个试图尽可能大的渲染对象,但它被放在另一个渲染中允许其子项选择自己尺寸的对象。”。
我明白这意味着什么,但不知道我如何仍然保持我当前的小部件树响应(它在运行时呈现,所以对于前端用户来说似乎没有问题)同时仍然解决这个问题。目前我没有设置某些东西的大小来保持响应,并希望尽可能避免小部件的硬编码大小。
非常感谢任何正确方向的帮助或指示:)
这是我当前的代码:
class EditArtikel extends StatefulWidget {
final String path;
EditArtikel({this.path});
@override
_EditArtikelState createState() => _EditArtikelState(path: path);
}
class _EditArtikelState extends State<EditArtikel> {
final String path;
_EditArtikelState({this.path});
final titleController = TextEditingController();
final subtitleController = TextEditingController();
final authorController = TextEditingController();
final textController = TextEditingController();
File imageFile;
List<DropdownMenuItem<dynamic>> dropdownMenuItemFromList() {
List<DropdownMenuItem<dynamic>> itemsList = [];
for (var i = 1; i < currentTags.length; i++) {
itemsList.add(new DropdownMenuItem(
child: Text(currentTags[i]),
value: currentTags[i],
));
}
return itemsList; …Run Code Online (Sandbox Code Playgroud) 我正在尝试初始化 SingleChildScrollView 以使用自定义 ScrollController 从某个位置开始。我想我可以使用initialScrollOffset并在init方法中设置一个初始值。但不知何故,当 SingleChildScrollView 渲染时,它仅在第一次构建时跳转到initialOffset,然后当我导航到此Widget的另一个实例时,它不会跳转到initialOffset位置。
我不知道为什么,如果我幸运的话,也许你们中的一个人能找到答案。
这是我的代码:
class Artiklar extends StatefulWidget {
final String path;
final double arguments;
Artiklar({
this.path,
this.arguments,
});
@override
_ArtiklarState createState() => _ArtiklarState(arguments: arguments);
}
class _ArtiklarState extends State<Artiklar> {
final double arguments;
_ArtiklarState({this.arguments});
ScrollController _scrollController;
double scrollPosition;
@override
void initState() {
super.initState();
double initialOffset = arguments != null ? arguments : 22.2;
_scrollController = ScrollController(initialScrollOffset: initialOffset);
}
@override
void dispose() {
_scrollController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final bool isAdmin = …Run Code Online (Sandbox Code Playgroud) 我正在使用 Flutter 和 Firebase 编写一个应用程序(目前使用 Firestore、Storage 和 Authentication)。
目前该应用程序显示来自 Firebase 的内容,但现在我正在尝试找出在 Firebase 中实现写入/编辑/删除内容的最佳方法。
目标是让用户拥有管理员权限。
我的问题是我是否可以在客户端应用程序中构建一个管理面板(这将是理想的),或者如果这被认为是不好的做法,我应该在另一个应用程序中构建一个管理面板并使用 Cloud Functions。
例如,目前我在 Flutter/Dart 代码中执行身份验证(注册/注册),并在注册时在 Firestore 中创建一个字段isAdmin = false,然后我可以在 Firestore 控制台中手动将其设置为 true(如果需要)。这可能是一种“不安全”的方式吗?
firebase firebase-authentication flutter google-cloud-functions google-cloud-firestore
当用户在应用程序中注册时,我会发送验证链接,但当我尝试创建一个监听用户何时单击电子邮件中的验证链接的流时,我会发送验证链接。
我知道我需要以某种方式刷新用户令牌,但我似乎无法让它工作。我认为reload()方法就是方法,但也许我只是没有正确实施它。
问题是 Stream 总是返回 isEmailVerified == false,使其为 true 的唯一方法是用户注销并再次登录,这是我想避免的事情。我该怎么做呢?
我创造了这个未来:
//CHECKS IF EMAIL IS VERIFIED
Future<bool> checkIfEmailIsVerified() async {
FirebaseUser currUser = await _auth.currentUser();
await currUser.reload();
currUser = await _auth.currentUser();
final bool flag = currUser.isEmailVerified;
if (currUser != null) {
return flag;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
和这个流:
//IS EMAILVERIFIED STREAM
Stream<EmailVerified> get emailVerified async* {
final bool isEmailVerified = await checkIfEmailIsVerified();
yield EmailVerified(isEmailVerified);
}
Run Code Online (Sandbox Code Playgroud)