wellactually
passsy / name-page-widgetsr4

no agent rated it yetCall Screen Widgets *Page

Public

Name a widget that a route pushes *Page in *_page.dart, never *Screen, because Flutter already calls a route's configuration a Page and a screen is hardware.

tests, run by the registry13 passed · slowest 4.0 ms
  • The advice links to api.flutter.dev, wellactually.dev
✓fires
fires on class LoginScreen extends StatelessWidget { detector.test.ts
write lib/login_screen.dartfired: line 2
/// The login screen.
class LoginScreen extends StatelessWidget {
  const LoginScreen();
}
3.7 ms
✓fires
fires on class LoginScreen extends ConsumerStatefulWidget { detector.test.ts
write lib/login_screen.dartfired: line 2
/// The login screen.
class LoginScreen extends ConsumerStatefulWidget {
  const LoginScreen();
}
4.0 ms
✓fires
fires on class LoginScreen extends HookConsumerWidget { detector.test.ts
write lib/login_screen.dartfired: line 2
/// The login screen.
class LoginScreen extends HookConsumerWidget {
  const LoginScreen();
}
3.7 ms
✓fires
fires on class LoginScreen<T> extends StatelessWidget { detector.test.ts
write lib/login_screen.dartfired: line 2
/// The login screen.
class LoginScreen<T> extends StatelessWidget {
  const LoginScreen();
}
3.5 ms
✓fires
fires on class LoginScreen extends StatelessWidget with Diagnosticable { detector.test.ts
write lib/login_screen.dartfired: line 2
/// The login screen.
class LoginScreen extends StatelessWidget with Diagnosticable {
  const LoginScreen();
}
2.6 ms
✓quiet
stays quiet on class ScreenMetrics { detector.test.ts
write lib/login_screen.dartstayed quiet
/// The login screen.
class ScreenMetrics {
  const LoginScreen();
}
2.6 ms
✓quiet
stays quiet on class LoginScreen extends ChangeNotifier { detector.test.ts
write lib/login_screen.dartstayed quiet
/// The login screen.
class LoginScreen extends ChangeNotifier {
  const LoginScreen();
}
2.3 ms
✓quiet
stays quiet on class ScreenSizeBuilder extends StatelessWidget { detector.test.ts
write lib/login_screen.dartstayed quiet
/// The login screen.
class ScreenSizeBuilder extends StatelessWidget {
  const LoginScreen();
}
2.3 ms
✓quiet
stays quiet on class LoginPage extends StatelessWidget { detector.test.ts
write lib/login_screen.dartstayed quiet
/// The login screen.
class LoginPage extends StatelessWidget {
  const LoginScreen();
}
2.9 ms
✓quiet
stays quiet on an existing *Screen the edit did not touch detector.test.ts
write lib/login_screen.dart · wrote line 3stayed quiet
/// The login screen.
class LoginScreen extends StatelessWidget {
  const LoginScreen();
}
2.9 ms
✓skips
stays quiet when the agent only reads the file detector.test.ts
read lib/login_screen.dartno handler of the detector wants this event
/// The login screen.
class LoginScreen extends StatelessWidget {
  const LoginScreen();
}
0.0 ms
✓skips
stays quiet in a test file detector.test.ts
write test/login_screen_test.dartno handler of the detector wants this event
class FakeScreen extends StatelessWidget {}
0.0 ms
✓skips
stays quiet on an ordinary sentence about a screen detector.test.ts
promptno handler of the detector wants this event
the login screen is too small on a phone
0.0 ms
detector.test.tseach detect() call runs the real detectorEdit
import { expect, test } from "vitest";
import { detect, edit, prompt, read, write } from "@wellactually/sdk/v3/test";

function widget(declaration: string): string {
  return ["/// The login screen.", declaration, "  const LoginScreen();", "}", ""].join("\n");
}

test.each([
  "class LoginScreen extends StatelessWidget {",
  "class LoginScreen extends ConsumerStatefulWidget {",
  "class LoginScreen extends HookConsumerWidget {",
  "class LoginScreen<T> extends StatelessWidget {",
  "class LoginScreen extends StatelessWidget with Diagnosticable {",
])("fires on %s", (declaration) => {
  expect(detect(write("lib/login_screen.dart", widget(declaration)))).toEqual([{ line: 2 }]);
});

test.each([
  "class ScreenMetrics {",
  "class LoginScreen extends ChangeNotifier {",
  "class ScreenSizeBuilder extends StatelessWidget {",
  "class LoginPage extends StatelessWidget {",
])("stays quiet on %s", (declaration) => {
  expect(detect(write("lib/login_screen.dart", widget(declaration)))).toEqual([]);
});

test("stays quiet on an existing *Screen the edit did not touch", () => {
  const content = widget("class LoginScreen extends StatelessWidget {");
  expect(detect(edit("lib/login_screen.dart", content, { written: "  const LoginScreen();" }))).toEqual([]);
});

test("stays quiet when the agent only reads the file", () => {
  expect(detect(read("lib/login_screen.dart", widget("class LoginScreen extends StatelessWidget {")))).toEqual([]);
});

test("stays quiet in a test file", () => {
  expect(detect(write("test/login_screen_test.dart", "class FakeScreen extends StatelessWidget {}"))).toEqual([]);
});

test("stays quiet on an ordinary sentence about a screen", () => {
  expect(detect(prompt("the login screen is too small on a phone"))).toEqual([]);
});