如何在 Dart 中使用格式良好的箭头函数?

How to use well formatted arrow functions in Dart?

在一个 flutter/dart 项目上工作 我目前几乎一直在考虑一种方法来 减少我的代码大小 ,考虑到其中一个方法是使用箭头避免括号的功能。

但是我找不到让它们保持美观的方法,例如如果我使用此代码:

@widget
Widget poscompExams() => StoreConnector<AppState, ViewModel>(
    converter: ViewModel.fromStore,
    builder: (BuildContext context, ViewModel vm) => Scaffold(
        body: Column(
          children: <Widget>[
            Expanded(
              child: ListView.builder(
                itemCount: vm.poscomp.exams.length,
                itemBuilder: (BuildContext context, int index) {
                  return ListTile(
                    title: Text('Test'),
                    subtitle: const Text('Inserção das provas em andamento'),
                    leading: const Icon(Icons.computer),
                    onTap: () => {}
                  );
                },
              ),
            ),
          ],
      );
    },
  );

如果像这样就更好了:

@widget
Widget poscompExams() => 
  StoreConnector<AppState, ViewModel>(
    converter: ViewModel.fromStore,
    builder: (BuildContext context, ViewModel vm) => 
      Scaffold(
        body: Column(
          children: <Widget>[
            Expanded(
              child: ListView.builder(
                itemCount: vm.poscomp.exams.length,
                itemBuilder: (BuildContext context, int index) {
                  return ListTile(
                    title: Text('Test'),
                    subtitle: const Text('Inserção das provas em andamento'),
                    leading: const Icon(Icons.computer),
                    onTap: () => {}
                  );
                },
              ),
            ),
          ],
      );
    },
  );

我研究了一些方法并找到了 dart_style,但它似乎遵循一般相同的格式化模式。

Javascript 上的 prettier 之类的东西会很好,带有标志选项。

一般来说,如果缩进超过六级或七级,就该进行重构了。这将使您更容易为变体覆盖其中的某些部分,并使阅读和维护您的代码的人更容易理解您的意图。

在您的特定代码中,我会在您的 class 中将 ListView.builder 作为单独的方法取出。有 IDE 操作可以帮助进行这种重构。

此外,在您的代码中,() => {} 是一个返回空地图的函数。您应该将其修复为 () {}.