小编Dar*_*han的帖子

颤动:无需后退即可移至新屏幕

我正在我的Flutter应用程序中实现身份验证流程.

登录尝试后,将使用以下代码打开 CheckAuth (检查用户是否已登录,然后打开主屏幕或相应地注册屏幕):

  void _signIn() async {
    await _auth
        .signInWithEmailAndPassword(
            email: _userEmail.trim(), password: _userPassword.trim())
        .then((task) {
      // go to home screen
      if (task.getIdToken() != null) {
        setState(() {
          Navigator.pushReplacement(
              context,
              new MaterialPageRoute(
                  builder: (BuildContext context) => new CheckAuth()));
        });
      } else {
        print("Authentication failed");
      }
    });
  }
Run Code Online (Sandbox Code Playgroud)

问题:我可以成功登录该应用,但如果我在登录后点击后退按钮,则会返回到登录屏幕(我希望它从应用中退出).

问题:如何在Flutter中从一个屏幕移动到另一个屏幕而无法返回?

我是否需要以某种方式删除导航器历史记录?或者根本不使用导航仪?我尝试了Navigator.replace方法,但似乎没有用.

navigation screens navigator flutter

24
推荐指数
7
解决办法
1万
查看次数

Flutter:SimpleDialog中的ListView

我想在我的Flutter应用程序中使用以下代码显示带有ListView.builder的SimpleDialog:

showDialog(
  context: context,
  builder: (BuildContext context) {
    return new SimpleDialog(
      children: <Widget>[
        new FittedBox(
          child: new ListView(
            children: <Widget>[
              new Text("one"),
              new Text("two"),
            ],
          ),
        )
      ],
    );
  },
);
Run Code Online (Sandbox Code Playgroud)

这给出了这个错误(抱歉,我无法将日志包装为代码,因为Stackoverflow抱怨代码太多了):

══╡通过渲染图书馆的例外情况╞═​​══════════════════════════════════════════════════════════════════════════════════════════════ =/flutter(4481):在performLayout()期间抛出以下断言:I/flutter(4481):RenderViewport不支持返回内部维度.I/flutter(4481):计算内在维度需要实例化视口的每个子节点,我/ flutter(4481):击败视口的懒惰点.I/flutter(4481):如果你只是想在主轴方向上收缩包装视口,可以考虑一个I/flutter(4481):RenderShrinkWrappingViewport渲染对象(ShrinkWrappingViewport小部件),它实现了I/flutter(4481) :没有实现内在维度API的效果.I/flutter(4481):...我/ flutter(4481):抛出了另一个异常:RenderBox没有布局:RenderPhysicalShape#83d92 relayoutBoundary = up2 NEEDS-PAINT I/flutter(4481):抛出另一个异常:' package:flutter/src/rendering/shifted_box.dart':断言失败:第310行pos 12:'child.hasSize':不是真的.I/flutter(4481):抛出了另一个异常:RenderBox没有布局:RenderPhysicalShape#83d92 relayoutBoundary = up2

我尝试使用具有特定高度和宽度的Container,它可以工作,但我希望ListView能够适应Dialog.

如何在SimpleDialog中包含ListView?

listview flutter

16
推荐指数
4
解决办法
1万
查看次数

Flutter:首次加载时将数据预加载到 Firestore 本地缓存中

我已经在我的 Flutter 应用程序中实现了 Cloud Firestore 并遇到了这个问题:如果应用程序的第一次加载(安装后)没有网络连接,则不会显示任何数据。 我的问题是:即使没有互联网连接,如何才能在第一次加载(安装后)时显示来自 Firestore 的数据?我获取数据的代码是这样的:

class QuestionsListState extends State<QuestionsList> {
  @override
  Widget build(BuildContext context) {

    return new StreamBuilder<QuerySnapshot>(
      stream: _questionsCollectionReference
          .where("category", isEqualTo: _chosenCategory).orderBy("order").snapshots,
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (!snapshot.hasData) return const Text('');
        final int messageCount = snapshot.data.documents.length;
        return new ListView.builder(
          itemCount: messageCount,
          itemBuilder: (_, int index) {
            final DocumentSnapshot document = snapshot.data.documents[index];
            return new ListTile(
              title: new FlatButton(
                  onPressed: () {
                    Navigator.push(context, new MaterialPageRoute(
                      builder: (BuildContext context) => new AddAnswerDialog(),
                      fullscreenDialog: true,
                    )); …
Run Code Online (Sandbox Code Playgroud)

preload offline-caching dart flutter google-cloud-firestore

6
推荐指数
1
解决办法
3958
查看次数

Firebase Auth状态检查Flutter

目前,我需要设置检查用户是否登录,然后相应地采取行动(打开主页或登录屏幕).我只使用电子邮件身份验证.

如何在flutter中检查用户firebase身份验证状态?

这里已经提出了这个问题,但我没有以这种方式检查身份验证状态:

final auth = FirebaseAuth.instance;

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
        title: 'MyApp',
        home: (_checkLogin() == true ? new PostAuthScaffold() : new PreAuthScaffold())
    );
  }
}

bool _checkLogin() {
  return !(auth.currentUser == null);
}
Run Code Online (Sandbox Code Playgroud)

dart firebase firebase-authentication flutter

6
推荐指数
2
解决办法
2482
查看次数

如何在Flutter中从Firebase Auth获取用户ID?

我想通过将用户ID作为字段分配给文档来在Firestore中保存与用户相关的数据.

如何从Firebase Auth获取用户ID?

或者有更好的方法在Firestore中存储用户数据吗?

我无法以这种方式从Firebase Auth获取用户ID(Text(_userId)返回_userId == null错误):

String _userId;
  ...

  @override
  Widget build(BuildContext context) {
    FirebaseAuth.instance.currentUser().then((user) {
      _userId = user.uid;
    });

    return new Scaffold(
      appBar: new AppBar(
        title: new Text("App bar"),
      ),
      body: new Text(_userId),
    );
  }
Run Code Online (Sandbox Code Playgroud)

dart firebase firebase-authentication flutter google-cloud-firestore

6
推荐指数
1
解决办法
5760
查看次数

Flutter:关闭互联网连接后出错 - “将 io.flutter.console.FlutterConsoleFilter@70f92821 应用于 'W/zzajf (5265) 时出错”

我将 Firestore 用于我的 Flutter 应用程序。

当我在模拟器上禁用互联网连接时,控制台上会出现以下错误:

V/NativeCrypto( 6278): Read error: ssl=0xa4621708: I/O error during system call, Software caused connection abort
W/zzaeo   ( 6278): [{0}] Failed to resolve name. status={1}
V/NativeCrypto( 6278): Write error: ssl=0xa4621708: I/O error during system call, Broken pipe
V/NativeCrypto( 6278): Write error: ssl=0xa4621708: I/O error during system call, Broken pipe
W/zzajf   ( 6278): Failed closing connection
W/zzajf   ( 6278): javax.net.ssl.SSLException: Write error: ssl=0xa4621708: I/O error during system call, Broken pipe
W/zzajf   ( 6278):  at com.google.android.gms.org.conscrypt.NativeCrypto.SSL_write(Native Method)
W/zzajf …
Run Code Online (Sandbox Code Playgroud)

error-handling disconnection flutter

6
推荐指数
1
解决办法
3396
查看次数

Flutter:创建新行后文本字段光标不会下降

我正在使用文本字段小部件进行文本编辑:

          new TextField(
            controller: _controller,
            maxLines: null,
          ),
Run Code Online (Sandbox Code Playgroud)

问题:当我开始一个新行时,直到我开始输入文本时,光标才会下降。

这是屏幕截图: 在此处输入图片说明

我的问题:如何使光标在创建后立即下移到新行?

widget cursor textfield flutter

5
推荐指数
1
解决办法
1675
查看次数

Flutter:如何制作首次启动应用指南?

如何在首次启动时显示应用程序指南/介绍?

我应该使用什么小部件以及如何检测首次启动?

widget launch flutter

5
推荐指数
1
解决办法
5363
查看次数

如何在状态栏后面绘制列表视图而无需填充?

这就是我想要实现的目标:

脚手架内容位于状态栏后面

这就是我现在所拥有的:

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      body: ListView(
        children: [
          Image.asset(
            'assets/images/videosbg.png',
            fit: BoxFit.cover,
            height: 300,
            width: double.infinity,
          ),
          ...
        ],
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

脚手架内容位于状态栏下方

我不想删除状态栏或更改其颜色,因此 SystemChrome 不适合我。

如何将脚手架主体放置在状态栏后面而不是下面?我是否需要以某种方式删除状态栏的上部填充?

dart flutter

5
推荐指数
1
解决办法
1630
查看次数

Firebase Auth,电子邮件为Flutter

我目前正在努力实施电子邮件注册并登录我的应用程序.出于商业原因,我无法使用Google登录或其他替代方法.

如何在Flutter中使用电子邮件实施Firebase身份验证?有没有办法使用Firebase Auth插件?

email dart firebase firebase-authentication flutter

4
推荐指数
1
解决办法
2812
查看次数

Flutter:如何根据可用空间裁剪文本?

如何根据可用空间裁剪文本?

有一个类似的问题在这里,但没有工作的答案。

目前,此代码

            return new GridTile(
              child: new Card(
                elevation: 3.0,
                child: new Container(
                  padding: new EdgeInsets.all(10.0),
                  child: new Column(
                    children: <Widget>[
                      Text(
                        document['title'],
                        style: new TextStyle(fontWeight: FontWeight.bold),
                      ),
                      Text(
                        document['text'],
                      ),
                    ],
                  ),
                ),
              )
            );
Run Code Online (Sandbox Code Playgroud)

给出了这个结果:

在此处输入图片说明

我尝试使用overflow: TextOverflow.ellipsis,但文本变成 1 行长。指定文本行长度是一个坏主意,因为在不同的屏幕尺寸上结果会有所不同。

如何使文本裁剪、适合或包裹到可用空间中?

text widget overflow dart flutter

4
推荐指数
2
解决办法
5852
查看次数

Flutter:从 Firestore 中搜索文本数据

我想在我的 Flutter 应用程序中实现一个搜索功能。文本数据存储在 Firestore 中。

现在我正在考虑一个不切实际的解决方案:下载整个集合(这是一个纯文本),然后以某种方式使用 Dart 代码搜索它。

有没有更好的方法在 Flutter/Firestore 中进行搜索?我可以使用 Cloud Functions 来做到这一点吗?如果没有更好的方法,如何在 Flutter 中使用 Dart 搜索内容?

search text dart flutter google-cloud-firestore

2
推荐指数
1
解决办法
6094
查看次数