modal_infonegaocio.dart 7.3 KB

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