Я не уверен, что это то, что вам нужно, но вы можете попробовать использовать виджет Transform.translate
в вашем стеке, чтобы немного сместить кнопку со значком
Посмотрите пример здесь https://dartpad.dartlang.org/59a39d191234f84cd250fafded43cfda
Таким образом, независимо от разрешения экрана, кнопка всегда будет на краю нижней карты.
Полный пример:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: DemoPage(),
);
}
}
class DemoPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: <Widget>[
Positioned.fill(
child: Image.network(
'https://upload.wikimedia.org/wikipedia/commons/3/3a/Official_New_York_City_Subway_Map_vc.jpg',
fit: BoxFit.cover,
),
),
Positioned(
bottom: 0,
left: 0,
right: 0,
child: Stack(
children: <Widget>[
Container(
color: Colors.white,
child: Column(
children: <Widget>[
SizedBox(height: 30),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.keyboard_arrow_left,
),
Text(
'45',
style: TextStyle(fontSize: 30),
),
Icon(
Icons.keyboard_arrow_right,
),
],
),
Container(
height: 150,
child: Placeholder(),
)
],
),
),
Align(
alignment: AlignmentDirectional.centerEnd,
child: Transform.translate(
offset: Offset(0, -20),
child: FlatButton(
child: Icon(Icons.play_arrow, size: 28),
shape: CircleBorder(),
color: Colors.red,
onPressed: () {},
),
),
),
],
),
)
],
),
);
}
}