Flutter - как получить текстовый виджет при тестировании виджета

Swift 4 Решение для создания UICollectionViewCell round и добавления Shadows без каких-либо расширений и осложнений:)

Примечание. Для простых видов, например кнопок. См. Ответ @ suragch's в этом сообщении. https://stackoverflow.com/a/34984063/7698092 . Протестировано успешно для кнопок

В случае, если кто-то все еще пытается обогнуть углы и одновременно добавлять тени. Хотя это решение работает с UICollectionViewCell, оно может быть обобщено на любой взгляд.

Этот метод работал для меня без каких-либо расширений и всех сложных вещей. Я работаю с storyBoard.

Technique

Вы должны добавить UIView (скажем, «containerView») внутри вашего UICollectionViewCell в storyBoard и добавить все необходимые представления (кнопки, изображения и т. д.) внутри этого контейнера. См. Скриншот.

Подключите розетку для контейнераView. Добавьте следующие строки кода в функцию делегата CellforItemAtIndexPath.

//adds shadow to the layer of cell

cell.layer.cornerRadius = 3.0
    cell.layer.masksToBounds = false
    cell.layer.shadowColor = UIColor.black.cgColor
    cell.layer.shadowOffset = CGSize(width: 0, height: 0)
    cell.layer.shadowOpacity = 0.6

//makes the cell round 

let containerView = cell.containerView!
    containerView.layer.cornerRadius = 8
    containerView.clipsToBounds = true

Выход

См. Симулятор Скриншот

1
задан Ricardo Smania 17 January 2019 в 12:16
поделиться

2 ответа

Вы можете использовать find.text

https://flutter.io/docs/cookbook/testing/widget/finders#1-find-a-text-widget [114 ]

testWidgets('finds a Text Widget', (WidgetTester tester) async {
  // Build an App with a Text Widget that displays the letter 'H'
  await tester.pumpWidget(MaterialApp(
    home: Scaffold(
      body: Text('H'),
    ),
  ));

  // Find a Widget that displays the letter 'H'
  expect(find.text('H'), findsOneWidget);
});
0
ответ дан Jordan Davies 17 January 2019 в 12:16
поделиться

Я получил это работает. Мне нужно было получить доступ к свойству виджета элемента, а затем преобразовать его в текст:

var text = finder.evaluate().single.widget as Text;
print(text.data);
0
ответ дан Ricardo Smania 17 January 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: