modal_infonegaocio.dart 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. import 'package:flutter/material.dart';
  2. void mostrarInformacionNegocioBottomSheet(BuildContext context) {
  3. showModalBottomSheet(
  4. context: context,
  5. isScrollControlled: true,
  6. backgroundColor: Colors.transparent,
  7. builder: (context) => Container(
  8. height: MediaQuery.of(context).size.height * 0.7,
  9. decoration: const BoxDecoration(
  10. color: Colors.white,
  11. borderRadius: BorderRadius.only(
  12. topLeft: Radius.circular(25),
  13. topRight: Radius.circular(25),
  14. ),
  15. ),
  16. child: SingleChildScrollView(
  17. child: Column(
  18. crossAxisAlignment: CrossAxisAlignment.start,
  19. children: [
  20. Container(
  21. height: 150,
  22. width: double.infinity,
  23. decoration: BoxDecoration(
  24. borderRadius: const BorderRadius.only(
  25. topLeft: Radius.circular(25),
  26. topRight: Radius.circular(25),
  27. ),
  28. image: DecorationImage(
  29. image: const AssetImage('assets/turquessa_prop.jpg'),
  30. fit: BoxFit.cover,
  31. colorFilter: ColorFilter.mode(
  32. Colors.black.withOpacity(0.3),
  33. BlendMode.darken,
  34. ),
  35. ),
  36. ),
  37. child: Center(
  38. child: Column(
  39. mainAxisAlignment: MainAxisAlignment.center,
  40. children: [
  41. Container(
  42. padding: const EdgeInsets.all(8),
  43. decoration: BoxDecoration(
  44. color: Colors.white,
  45. borderRadius: BorderRadius.circular(10),
  46. ),
  47. child: Image.asset('assets/Turquessa.png', height: 50),
  48. ),
  49. const SizedBox(height: 10),
  50. const Text(
  51. 'Turquessa-Coffee',
  52. style: TextStyle(
  53. color: Colors.white,
  54. fontSize: 24,
  55. fontWeight: FontWeight.bold,
  56. ),
  57. ),
  58. ],
  59. ),
  60. ),
  61. ),
  62. // Sección de información
  63. Padding(
  64. padding: const EdgeInsets.all(20),
  65. child: Column(
  66. crossAxisAlignment: CrossAxisAlignment.start,
  67. children: [
  68. const Text(
  69. 'Acerca de nosotros',
  70. style: TextStyle(
  71. fontSize: 18,
  72. fontWeight: FontWeight.bold,
  73. color: Color(0xFF2FD0E5),
  74. ),
  75. ),
  76. const SizedBox(height: 8),
  77. const Text(
  78. 'Turquessa-Coffee es una cafetería de especialidad con los mejores granos seleccionados. Nuestro compromiso es ofrecer una experiencia única en cada taza.',
  79. style: TextStyle(fontSize: 14, color: Colors.black87),
  80. ),
  81. const SizedBox(height: 20),
  82. // Información de contacto
  83. _buildInfoItem(Icons.location_on, 'Dirección',
  84. 'Av. Principal #123, Zona Centro'),
  85. _buildInfoItem(Icons.access_time, 'Horario',
  86. 'Lun-Vie: 7:00 - 20:00\nSáb-Dom: 8:00 - 18:00'),
  87. _buildInfoItem(Icons.phone, 'Teléfono', '(55) 1234-5678'),
  88. _buildInfoItem(Icons.email, 'Email', 'info@turquessa.com'),
  89. _buildInfoItem(
  90. Icons.language, 'Sitio web', 'www.turquessa.com'),
  91. const SizedBox(height: 20),
  92. // Redes sociales
  93. const Text(
  94. 'Síguenos en redes sociales',
  95. style: TextStyle(
  96. fontSize: 18,
  97. fontWeight: FontWeight.bold,
  98. color: Color(0xFF2FD0E5),
  99. ),
  100. ),
  101. const SizedBox(height: 10),
  102. Row(
  103. mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  104. children: [
  105. _buildSocialButton(Icons.facebook, 'Facebook'),
  106. _buildSocialButton(Icons.camera_alt, 'Instagram'),
  107. _buildSocialButton(Icons.chat_bubble, 'Twitter'),
  108. ],
  109. ),
  110. const SizedBox(height: 30),
  111. Center(
  112. child: TextButton(
  113. onPressed: () => Navigator.pop(context),
  114. child: Container(
  115. padding: const EdgeInsets.symmetric(
  116. horizontal: 30, vertical: 10),
  117. decoration: BoxDecoration(
  118. color: const Color(0xFF2FD0E5),
  119. borderRadius: BorderRadius.circular(20),
  120. ),
  121. child: const Text('Cerrar',
  122. style: TextStyle(color: Colors.white)),
  123. ),
  124. ),
  125. ),
  126. const SizedBox(height: 20),
  127. ],
  128. ),
  129. ),
  130. ],
  131. ),
  132. ),
  133. ),
  134. );
  135. }
  136. // Widgets auxiliares para el Bottom Sheet
  137. Widget _buildInfoItem(IconData icon, String title, String content) {
  138. return Padding(
  139. padding: const EdgeInsets.symmetric(vertical: 10),
  140. child: Row(
  141. crossAxisAlignment: CrossAxisAlignment.start,
  142. children: [
  143. Container(
  144. padding: const EdgeInsets.all(8),
  145. decoration: BoxDecoration(
  146. color: const Color(0xFFE6F9FB),
  147. borderRadius: BorderRadius.circular(8),
  148. ),
  149. child: Icon(icon, color: const Color(0xFF2FD0E5), size: 22),
  150. ),
  151. const SizedBox(width: 15),
  152. Expanded(
  153. child: Column(
  154. crossAxisAlignment: CrossAxisAlignment.start,
  155. children: [
  156. Text(
  157. title,
  158. style: const TextStyle(
  159. fontSize: 16,
  160. fontWeight: FontWeight.bold,
  161. color: Colors.black87,
  162. ),
  163. ),
  164. const SizedBox(height: 4),
  165. Text(
  166. content,
  167. style: const TextStyle(color: Colors.black54, fontSize: 14),
  168. ),
  169. ],
  170. ),
  171. ),
  172. ],
  173. ),
  174. );
  175. }
  176. Widget _buildSocialButton(IconData icon, String platform) {
  177. return Column(
  178. children: [
  179. Container(
  180. padding: const EdgeInsets.all(12),
  181. decoration: BoxDecoration(
  182. color: const Color(0xFFE6F9FB),
  183. borderRadius: BorderRadius.circular(12),
  184. ),
  185. child: Icon(icon, color: const Color(0xFF2FD0E5), size: 24),
  186. ),
  187. const SizedBox(height: 5),
  188. Text(platform, style: const TextStyle(fontSize: 12)),
  189. ],
  190. );
  191. }