我有一个函数可以构建一个小部件以便能够重用它,并且在该函数中我想设置文本主题。我的问题是要做到这一点,我需要访问 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) 我需要将ScrollPhysics应用程序中几乎每个可滚动小部件的BouncingScrollPhysics(). 我试图找到一种方法来做到这一点,而无需在physics任何地方添加属性,但我还没有找到好的方法。一种解决方案是使用flutter_platform_widgets并设置initialPlatform为 iOS,但这也会改变很多其他事情。
有谁知道这是否可能,在这种情况下如何?
我们正在努力让用户能够选择整个文件夹并将其上传到我们的后端。这在 Android 和 iOS 上没有问题,我可以使用getDirectoryPath()from FilePicker,然后使用 获取所有文件Directory(path).listSync(recursive: true)。
问题是,这在网络上不可用,虽然我可以兑换dart:io,universal_io但这对getDirectoryPath().
我在这里可以使用其他方法吗?最终目标是将所选文件夹上传到 Google Cloud Storage,所以我的一个想法是完全绕过 Flutter,但我还没有找到一种方法来做到这一点。有任何想法吗?
我正在使用 PageView 在 flutter 中构建一个水平滚动列表,但是,我希望能够同时滚动多个页面。目前,如果我滚动得非常快,这是可能的,但它远非理想。另一种选择是将 pageSnapping 设置为 false,但它根本不会对齐,这不是我想要的。
我认为如果滚动速度低于某个阈值,则可能可以将 pageSnapping 从 false 更改为 true,但我不知道如何获得所述速度。
我正在构建的应用程序看起来像这样。
感谢所有帮助!
Dart 有两种不同的方式生成随机数。Random()和Random.secure(),其中前者是伪随机的。仅凭此信息,显然Random.secure()应该始终使用该信息来确保生成的数字完全随机。
然而,由于存在两种生成数字的方法,我怀疑使用Random(). 这是正确的吗?在这种情况下,这些优势是什么?
我正在使用 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)