На самом деле доступны несколько вариантов:
Вы можете использовать SizedBox.expand, чтобы ваш виджет соответствовал родительским размерам, или SizedBox (width: double.infinity), чтобы соответствовать только ширине, или SizedBox (heigth: double.infinity), чтобы соответствовать только высоте.
Если вам нужно поведение wrap_content, оно зависит от родительского виджета, который вы используете, например, если вы поместите кнопку в столбец, он будет вести себя как wrap_content, а чтобы использовать его как match_parent, вы можете обернуть кнопку расширенным виджетом или размером.
С помощью ListView кнопка получает поведение match_parent, а чтобы получить поведение wrap_content, вы можете обернуть ее с помощью виджета Flex, такого как Row.
Использование расширенного виджета заставляет дочерний элемент строки, столбца или гибкого элемента расширяться, чтобы заполнить доступное пространство на главной оси (например, по горизонтали для строки или по вертикали для столбца).
https://docs.flutter.io/flutter/widgets/Expanded-class.html
Использование гибкого виджета дает дочернему элементу строки, столбца или гибкости возможность расширяться, чтобы заполнить доступное пространство на главной оси (например, по горизонтали для строки или по вертикали для столбца), но, в отличие от расширенного, гибкий не требовать, чтобы ребенок заполнил доступное пространство.
https://docs.flutter.io/flutter/widgets/F flexible-class.html