小编Ric*_*cky的帖子

使用 ImageIO.write 写入 jpg 或 jpeg 图像不会创建图像文件

我以最小的形式重新创建了这个问题:

主要的:

public class ImageIOMain extends Application {

    @Override
    public void start(Stage stage) throws Exception{
        Scene scene = new Scene(new StackPane(), 800.0, 600.0);

        stage.setScene(scene);
        stage.show();

        WritableImage img = scene.snapshot(null);

        //Image file created on desktop
        ImageIO.write(SwingFXUtils.fromFXImage(img, null), "png", new File("D:\\Desktop\\test.png"));

        //Image file NOT created on desktop
        ImageIO.write(SwingFXUtils.fromFXImage(img, null), "jpeg", new File("D:\\Desktop\\test.jpeg"));
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

重要提示:我使用的是 JavaFX 12。

如果我png在图像显示在我的桌面上时导出图像。例如,如果文件格式为 ,jpeg则不会创建图像。

过去,当我使用 JavaFX 8 保存时,jpeg使用上述代码会导致图像变成粉红色。现在在版本 12 中没有任何反应。

那么我怎样才能创建一个不是格式png …

jpeg javafx javax.imageio

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

Dart linting 排除分析器下的文件夹

如果我添加规则和错误但排除某些内容没有任何效果,我的 linting 工作正常。

这是我在项目根目录下的 analysis_options.yaml。

include: package:pedantic/analysis_options.yaml

analyzer:
  exclude:
    - lib/generated/**
    - test/**

  errors:
    ...
    

linter:
  rules:
    ...
Run Code Online (Sandbox Code Playgroud)


我的项目层次结构是这样的:

/analysis_options.yaml
/test/...
/lib/generated/...

所以我想忽略测试和lib下生成文件夹的linting。但不知何故它没有

我按照基于文档的说明进行操作:https ://dart.dev/guides/language/analysis-options

Dart 版本:2.8.4
Flutter 版本:1.17.5

在我的 pubspec.yaml 中,这是在依赖项下:

dependencies:
  ...
  pedantic: ^1.8.0
  ...
Run Code Online (Sandbox Code Playgroud)


那么如何防止 linting 不检查排除的文件夹呢?
感谢您的时间和帮助。

yaml lint dart

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

Flutter - 将 GetIt 与 BuildContext 结合使用

我根据 flutter 文档在我的应用程序中使用本地化。
请参阅此处: https://flutter.dev/docs/development/accessibility-and-localization/internationalization

我使用 get_it 包(版本 4.0.4)来检索单例对象,例如本地化委托。不幸的是它需要一个BuildContext属性。有时在我的应用程序中,我没有上下文引用,因此如果它像这样工作而GetIt.I<AppLocalizations>()不是这样:那就太好了AppLocalizations.of(context)。如果您像这样设置 get_it ,它仍然可以毫无问题地实现:GetIt.I.registerLazySingleton(() => AppLocalizations.of(context));问题是您至少需要上下文一次才能使其工作。此外,如果您想在初始路线中立即显示本地化文本,那么BuildContext在需要时正确初始化会更加困难。

对我来说正确解释它有点困难,所以我用一个最小的例子重新创建了这个问题。

我注释掉了一些会导致编译时错误的代码,但它显示了我想象的完成方式。

主程序.dart

GetIt getIt = GetIt.instance;

void setupGetIt() {
  // How to get BuildContext properly if no context is available yet?
  // Compile time error.
  // getIt.registerLazySingleton(() => AppLocalizations.of(context));
}

void main() {
  setupGetIt();

  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  MyApp({Key key}) : super(key: key);

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> …
Run Code Online (Sandbox Code Playgroud)

service-locator flutter

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

Dart - FirebaseFirestore 异常处理

该文档对于使用 firebase firestore 时的异常处理非常缺乏。我假设没有这样的东西来处理特定的错误。

我目前正在使用最新的依赖项:

  • firebase_core:^0.5.0
  • firebase_auth:^0.18.0+1
  • 云火存储:^0.14.0+2

在 firebase_auth 上,它有很好的文档记录,并且直接说明了如何处理异常。有一个名为的异常类FirebaseAuthException,它有一个code包含特定错误代码的字段(不幸的是作为字符串,但至少它提供了一些东西),例如invalid-emailuser-disabledweak-password等。这是一个很好的选择,因为我可以通知用户出了什么问题,并且程序可以根据这些错误代码采取相应的行动。

另一方面,不幸的是没有这样的东西,FirebaseFirestoreException而且文档也没有多大帮助。它仅显示了.catchError()使用带有类型的错误变量来处理可能的异常,dynamic因此它基本上可以是任何东西。

Future<void> addUser() {
  // Call the user's CollectionReference to add a new user
  return users
      .add({
        'full_name': fullName,
        'company': company,
        'age': age
      })
      .then((value) => print("User Added"))
      .catchError((error) => print("Failed to add user: $error"));
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是是否有任何东西或类似的东西可以处理特定的异常情况,例如FirebaseAuthException一些错误代码之类的东西。此外,我如何识别它是否是 FirebaseFirestore 异常?为什么它不提供例外以使开发人员感到更舒服?或者我错过了重点?请告诉我。

有关带有 flutter 的 firebase firestore 的文档:https ://firebase.flutter.dev/docs/firestore/usage

exception dart firebase flutter

5
推荐指数
0
解决办法
1281
查看次数