小编Han*_*ård的帖子

在构建函数之外使用 BuildContext

我有一个函数可以构建一个小部件以便能够重用它,并且在该函数中我想设置文本主题。我的问题是要做到这一点,我需要访问 BuildContext 才能这样做。我能想到的唯一方法是在每次函数调用时将其作为参数传递,但感觉必须有更简单的方法。或者这是最好的方法吗?

这是当前的代码:

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:snapping_page_scroll/snapping_page_scroll.dart';

void main() => runApp(MaterialApp(
      theme: ThemeData(
        backgroundColor: Color(0xff121217),
         textTheme: TextTheme(
           headline: TextStyle(fontSize: 40)
         )
      ),
      home: SplashScreen(),
    ));

class SplashScreen extends StatefulWidget {
  @override
  _SplashScreenState createState() => _SplashScreenState();
}

class _SplashScreenState extends State<SplashScreen> {
  @override
  void initState() {
    super.initState();
    loadData();
  }

  //Simulates loading of data
  Future<Timer> loadData() async {
    return new Timer(Duration(seconds: 1), onDoneLoading);
  }

  onDoneLoading() async {
    Navigator.of(context).push(MaterialPageRoute(builder: (context) => Home()));
  }

  @override
  Widget build(BuildContext context) {
    return Container( …
Run Code Online (Sandbox Code Playgroud)

dart flutter

9
推荐指数
1
解决办法
5130
查看次数

如何更改颤振中的默认 ScrollPhysics?

我需要将ScrollPhysics应用程序中几乎每个可滚动小部件的BouncingScrollPhysics(). 我试图找到一种方法来做到这一点,而无需在physics任何地方添加属性,但我还没有找到好的方法。一种解决方案是使用flutter_platform_widgets并设置initialPlatform为 iOS,但这也会改变很多其他事情。

有谁知道这是否可能,在这种情况下如何?

dart flutter

5
推荐指数
2
解决办法
1360
查看次数

如何在 Flutter Web 上选择目录?

我们正在努力让用户能够选择整个文件夹并将其上传到我们的后端。这在 Android 和 iOS 上没有问题,我可以使用getDirectoryPath()from FilePicker,然后使用 获取所有文件Directory(path).listSync(recursive: true)

问题是,这在网络上不可用,虽然我可以兑换dart:iouniversal_io但这对getDirectoryPath().

我在这里可以使用其他方法吗?最终目标是将所选文件夹上传到 Google Cloud Storage,所以我的一个想法是完全绕过 Flutter,但我还没有找到一种方法来做到这一点。有任何想法吗?

flutter flutter-web

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

在 PageView 中滚动多个页面更容易

我正在使用 PageView 在 flutter 中构建一个水平滚动列表,但是,我希望能够同时滚动多个页面。目前,如果我滚动得非常快,这是可能的,但它远非理想。另一种选择是将 pageSnapping 设置为 false,但它根本不会对齐,这不是我想要的。

我认为如果滚动速度低于某个阈值,则可能可以将 pageSnapping 从 false 更改为 true,但我不知道如何获得所述速度。

我正在构建的应用程序看起来像这样

感谢所有帮助!

dart flutter

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

如果不需要加密的强随机数,那么使用 Random() 相对于 Random.secure() 是否有优势?

Dart 有两种不同的方式生成随机数。Random()Random.secure(),其中前者是伪随机的。仅凭此信息,显然Random.secure()应该始终使用该信息来确保生成的数字完全随机。

然而,由于存在两种生成数字的方法,我怀疑使用Random(). 这是正确的吗?在这种情况下,这些优势是什么?

random dart

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

如何防止 Dio 在成功重试后抛出错误?

我正在使用 Dio 向 REST-api 发出请求。当授权令牌过期时,我刷新令牌并重新发送请求。执行此操作的代码如下所示:

onError: (DioError error, ErrorInterceptorHandler handler) async {
logger.d(errorLogString(error));

if (error.response?.statusCode == 401 && error.requestOptions.path != 'login' && _retries-- > 0) {
  await authService.refreshToken();

  error.response = await dio.request(
    error.requestOptions.path,
    data: error.requestOptions.data,
    queryParameters: error.requestOptions.queryParameters,
    options: Options(
      method: error.requestOptions.method,
      headers: error.requestOptions.headers,
    ),
  );
}

return handler.next(error);
},
Run Code Online (Sandbox Code Playgroud)

这工作正常,但即使新请求成功,Dio 仍然会抛出错误,这意味着我必须捕获并检查每个请求的状态代码。例如这样:

try {
  final response = await dio.post(
    'someUrl',
  );
  return Object.fromJson(response.data);
} catch (error) {
  if(error is DioError && (error.response?.statusCode ?? 300) < 300){
    return Object.fromJson(error.response!.data);
  }

  throw parseError(error); …
Run Code Online (Sandbox Code Playgroud)

dart dio

0
推荐指数
1
解决办法
2491
查看次数

标签 统计

dart ×5

flutter ×4

dio ×1

flutter-web ×1

random ×1