小编Kir*_*sov的帖子

flutter async 同步编程

可能只有我一个人,但 Flutter 中的异步编程似乎绝对是一场噩梦。javascript/typescript 中非常简单的东西似乎变得不必要地困难。例如,我正在尝试创建一个简单的函数来检查用户是否已通过身份验证:

Future<bool> isLoggedIn() async {
  var user = await FirebaseAuth.instance.currentUser();
  return user == null ? false : true;
}
Run Code Online (Sandbox Code Playgroud)

然后在这样的场景中使用这个函数:

Widget _buildChild() async {
    var auth = await user.isLoggedIn();
    if (auth) {
      return new Navigation();
    } else {
      return new LoginUI();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是第二个函数也需要返回一个未来?

标记为“async”的函数必须具有可分配给“Future”的返回类型。

使用 then() 而不是 await 也不起作用。之前在同步上下文中使用异步编程时,我曾多次遇到过这个问题。也许只是它的外观和感觉与 Promises 非常相似,我完全错过了文档中的功能。

asynchronous dart firebase flutter

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

如何在 Flutter 中使用 Dio 处理超时错误?

我正在使用 Dio 来处理 API 功能。

这是我的代码:

  Future<List<ItemModel>> getItems() async {
    try {
      Response response = await dio.get("$_apiUrl$_itemEndPoint",
          options: Options(headers: {
            "Accept": 'application/json',
          }));

      List<ItemModel> _items = List<ItemModel>();

      response.data['data']?.forEach((c) {
        _items.add(ItemModel.fromMap(c));
      });
      return _items;
    } catch (e) {
      throw (e);
    }
  }
Run Code Online (Sandbox Code Playgroud)

如何根据发送和接收超时捕获错误?

dart flutter dio

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

如何在颤振中没有上下文的情况下导航?

我最终使用了静态函数,但我需要进行导航,它给了我一个错误,没有找到上下文的吸气剂,所以我寻找解决方案并找到了 GET 包,但当我尝试使用它时,它给了我另一个错误:

E/flutter ( 6078): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] 
Unhandled Exception: NoSuchMethodError: The method 'push' was called on null.
Run Code Online (Sandbox Code Playgroud)

我的代码:

E/flutter ( 6078): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] 
Unhandled Exception: NoSuchMethodError: The method 'push' was called on null.
Run Code Online (Sandbox Code Playgroud)

navigation android-context flutter

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

表单颤动上的可拖动滚动条

我正在尝试在我的 flutter 上放置一个可拖动的滚动条Form,以便网络用户可以单击并拖动到屏幕底部。flutterScrollbar类适用于触摸屏设备,但不适用于鼠标!

我试过使用draggable_scrollbar,但它只接受ListView作为孩子。

这是我当前的代码结构:

    Widget build(BuildContext context) {
      return Scaffold(
        appBar: AppBar(
          title: Text('My form'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Scrollbar(
            child: SingleChildScrollView(
              child: Form(...),
            ),
          ),
        ),
      );
    }
Run Code Online (Sandbox Code Playgroud)

dart flutter

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

如何发送 JSON 数据而不是将其记录到控制台

我正在使用 Flutter 中的食品订购应用程序和 Express.js 中的 API 使用 MySql 作为数据库。我能够连接到数据库并接收 JSON 数据和 console.log() 它们,但我不知道如何将它们发送到应用程序。任何帮助将不胜感激。

这是代码。

const express = require('express');
const router = express.Router();
const mysql = require('mysql');

var pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'ala_ainy_db',
    connectionLimit: 10,
});

router.get('/', (req, res, next) => {

    pool.getConnection(function (err, conn) {
        if (err) return;
        conn.query('SELECT * FROM restaurants', function (err, rows) {
            if (err) {
                conn.release();
                console.log('failed');
            }
            rows.forEach((row) => {
                console.log(`ID: ${row.id}, Name: ${row.name}`);
            });
            conn.release();
        })
    });
});
Run Code Online (Sandbox Code Playgroud)

javascript node.js express

3
推荐指数
1
解决办法
168
查看次数

gulp.series() 在运行多个任务时不起作用

我正在尝试以同步方式一个接一个地运行多个 gulp 任务

但我收到以下错误

类型错误:gulp.series 不是函数

代码

gulp.task('default',function () {
    gulp.watch('resources/assets/js/components/*.js', function() {
        gulp.series('scripts','compress');
    });
}) 
Run Code Online (Sandbox Code Playgroud)

javascript gulp gulp-watch

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

Gulp4 迁移 - 无效的 glob 参数

我正在将 gulp 从 3.9.0 版迁移到 gulp 4.0.0 版。

我在 gulp.src('') 上的 gulpfile.js 中遇到错误,错误消息是“错误:无效的 glob 参数:”

我在 gulpfile.js 中的 gulp.task() 看起来像这样 -

gulp.task('build-version', function(done) {
    var dir = path.build + '/js',
        filename = "build.js";

    gulp.src('')
        .pipe(ngConfig('ppm', {
            createModule: false,
            constants: {
                newUIBuildVersion: buildVersion
            }
        }))
        .pipe(rename(filename))
        .pipe(gulp.dest(dir));

    // lint build.js file
    return gulp.src(dir + '/' + filename)
        .pipe(jshint(config.jshint))
        .pipe(jshint.reporter(stylish))
        .pipe(jshint.reporter('fail'))
        .on('error', function(err) {
            log(err);
        });});
Run Code Online (Sandbox Code Playgroud)

和 gulp 版本:4.0.0,节点版本:8.11.4

我的错误信息:在此处输入图片描述

请在终端中找到错误消息的图像。

有谁知道我该如何解决这个问题。

javascript gulp

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

如何制作好的颤动阴影效果?

我想制作如下所示的良好阴影效果,

在此处输入图片说明 在此处输入图片说明

在互联网上找到的所有示例甚至都无法接近上述设计。

经过长时间的反复试验,我可以进行以下操作。还是做不出内心的阴影。如果有人能指导我如何破译这些设计,那就太好了。

在此处输入图片说明

用于制作上述按钮的代码,

Widget buildBackButton() {
    double size = 47;
    return Stack(
      children: <Widget>[
        Container(
          width: size,
          height: size,
          decoration: BoxDecoration(
              color: Colors.white,
              shape: BoxShape.circle,
              boxShadow: [
                BoxShadow(
                  color: Colors.black26,
                  offset: Offset(20, 20),
                  blurRadius: 40,
                ),
                BoxShadow(
                  color: Colors.white,
                  offset: Offset(-20, -20),
                  blurRadius: 25,
                )
              ]),
          child: Material(
            color: Color(0xffe0eafb),
            borderRadius: BorderRadius.circular(size),
            elevation: 10,
            child: Padding(
              padding: const EdgeInsets.all(3.0),
              child: ClipOval(
                clipper: MClipper(),
              ),
            ),
          ),
        ),
        Container(
            width: 45.0,
            height: 45.0,
            padding: EdgeInsets.only(left: 2, top: 2),
            child: new …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-animation

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

导航到下一个屏幕时如何避免键盘弹出?

当我从 LoginScreen() 导航到 HomeScreen() 时,键盘会突然无缘无故地弹出,然后在导航进行时立即关闭。

调用屏幕pushReplacement的函数:

    () async {
                      if (_formKey.currentState.validate()) {
                        final FirebaseAuth _auth = FirebaseAuth.instance;
                        try {
                          await _auth.signInWithEmailAndPassword(
                              email: email, password: password);
                        } catch (e) {
                          Scaffold.of(context).showSnackBar(SnackBar(
                            content: Text('Email or Password are incorrect'),
                          ));
                        }

                        _user = await _auth.currentUser();

                        if (_user == null) {}
                        if (_user.isEmailVerified == true) {
                          Navigator.of(context)
                              .pushReplacementNamed(HomeScreen.routeName);
                        } else
                          Scaffold.of(context).showSnackBar(SnackBar(
                            content: Text('Validate your email pls!'),
                          ));
                      }
                    },
Run Code Online (Sandbox Code Playgroud)

和主屏幕():

    import 'package:final_login/screens/loginscreen.dart';
    import 'package:final_login/services/auth.dart';
    import 'package:flutter/material.dart';

    class HomeScreen extends StatefulWidget {
      static const routeName …
Run Code Online (Sandbox Code Playgroud)

dart flutter

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

如何从ExpansionTile的标头中删除默认填充

默认情况下,ExpansionTile的标头中有16个水平填充,因为它是ListTile并且具有

/// If null, `EdgeInsets.symmetric(horizontal: 16.0)` is used.
    final EdgeInsetsGeometry contentPadding;
Run Code Online (Sandbox Code Playgroud)

所以我们左右有空格 在此处输入图片说明

如何删除它们?

dart flutter

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