Дразнить маршрут с аргументами в Флаттер - Дарт - PullRequest
0 голосов
/ 17 мая 2019

У меня есть виджет, определенный следующим образом:

import ...;
...

class TechnicalError extends StatelessWidget {
    ...

    @override
    Widget build(BuildContext context) {
        TechnicalErrorPayload payload = ModalRoute.of(context).settings.arguments;

        return Scaffold(
            body: Column(...)
        );
    }
}

Я также определил именованный маршрут для этого виджета:

import ...;
const String TECHNICAL_DIFFICULTIES = '/technical-difficulties';
class MyApp extends StatelessWidget {

    MyApp() {
        ...
    }

    @override
    Widget build(BuildContext context) {

        return MaterialApp(
            routes: <String, WidgetBuilder> {
            ...
            TECHNICAL_DIFFICULTIES: (BuildContext context) => TechnicalError()
        }

        ...
        );
    }
}

Всякий раз, когда я хочу протолкнуть этот маршрут, я буду делать следующее:

var techErrPayload = TechnicalErrorPayload(...);
await Navigator.of(context).pushNamed(TECHNICAL_DIFFICULTIES, arguments: techErrPayload);

Все работает как положено. Проблема возникает, когда я хочу проверить виджет TechnicalError ... Как передать TechnicalErrorPayload этому виджету? Это не часть конструктора. Это принимается свойствами ModalRoute.

Это не сработает:

testWidgets('Me testing', (WidgetTester tester) async {
MaterialPageRoute test = MaterialPageRoute(
  builder: (BuildContext context) => TechnicalError(),

  settings: RouteSettings(
    name: 'Blah',
    arguments: TechnicalErrorPayload(friendlyErrorMessage: 'Hey Joe')
  )
);

//await tester.pumpWidget(WidgetWrapper.fromRouteWithNavigatorObservers(test, [navigatorobserverMock]));

await tester.pumpWidget(
  MaterialApp(
    navigatorObservers: [navigatorobserverMock],
    routes: {
      '/': (BuildContext context) => test.builder(context)
    },

  )
);
await tester.pumpAndSettle();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...