|
|
|
@ -1,105 +1,249 @@
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:travelguide/travelguideapp/ui/boundary/service1.dart';
|
|
|
|
|
import 'service0.dart';
|
|
|
|
|
import 'service2.dart';
|
|
|
|
|
import 'service3.dart';
|
|
|
|
|
|
|
|
|
|
class ServicePage extends StatelessWidget {
|
|
|
|
|
const ServicePage({super.key});
|
|
|
|
|
// 用于构建图片的函数
|
|
|
|
|
Widget _buildImage(String imagePath, double height, double verticalOffset) {
|
|
|
|
|
return Center( // 将图片居中
|
|
|
|
|
child: SizedBox(
|
|
|
|
|
height: height, // 使用传递的高度参数
|
|
|
|
|
child: Transform.translate(
|
|
|
|
|
offset: Offset(0, verticalOffset), // 使用传递的垂直偏移参数
|
|
|
|
|
child: Transform.scale(
|
|
|
|
|
scale: 0.9,
|
|
|
|
|
child: Image.asset(
|
|
|
|
|
imagePath,
|
|
|
|
|
void main() {
|
|
|
|
|
runApp(MaterialApp(
|
|
|
|
|
home: ServicePage(),
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class ServicePage extends StatefulWidget {
|
|
|
|
|
@override
|
|
|
|
|
_ServicePageState createState() => _ServicePageState();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class _ServicePageState extends State<ServicePage> {
|
|
|
|
|
String selectedService = '交通指南';
|
|
|
|
|
|
|
|
|
|
void onServiceSelected(String? service) {
|
|
|
|
|
setState(() {
|
|
|
|
|
selectedService = service ?? '交通指南'; // 使用默认值来处理空值
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return Scaffold(
|
|
|
|
|
appBar: AppBar(
|
|
|
|
|
title: Text('服务信息'),
|
|
|
|
|
backgroundColor: Colors.green,
|
|
|
|
|
),
|
|
|
|
|
body: SingleChildScrollView(
|
|
|
|
|
child: Column(
|
|
|
|
|
children: [
|
|
|
|
|
DropdownButton<String>(
|
|
|
|
|
value: selectedService,
|
|
|
|
|
items: [
|
|
|
|
|
DropdownMenuItem(value: '交通指南', child: Text('交通指南', style: TextStyle(fontSize: 20))),
|
|
|
|
|
DropdownMenuItem(value: '参观须知', child: Text('参观须知', style: TextStyle(fontSize: 20))),
|
|
|
|
|
DropdownMenuItem(value: '票务信息', child: Text('票务信息', style: TextStyle(fontSize: 20))),
|
|
|
|
|
DropdownMenuItem(value: '服务接待', child: Text('服务接待', style: TextStyle(fontSize: 20)),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
onChanged: onServiceSelected,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
Container(
|
|
|
|
|
child: getServiceContent(selectedService),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getServiceContent(String service) {
|
|
|
|
|
switch (service) {
|
|
|
|
|
case '交通指南':
|
|
|
|
|
return Service0();
|
|
|
|
|
case '参观须知':
|
|
|
|
|
return Service1();
|
|
|
|
|
case '票务信息':
|
|
|
|
|
return Service2();
|
|
|
|
|
case '服务接待':
|
|
|
|
|
return Service3();
|
|
|
|
|
default:
|
|
|
|
|
return Text('选择一个服务内容');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class Service0 extends StatelessWidget {
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return Center(
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: const EdgeInsets.symmetric(horizontal: 20),
|
|
|
|
|
child: Text(
|
|
|
|
|
'天津博物馆站:\n'
|
|
|
|
|
'655路、668路、686路、868路、912路、835路(单程)、47路(单程),请在“天津博物馆站”下车,步行300米即到。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'宾馆南道站:\n'
|
|
|
|
|
'636路、641路、662路、800路、826路、838路、906路,请在“宾馆南道站”下车,步行500米即到。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'文化中心公交站:\n'
|
|
|
|
|
'公交682路、688路、803路\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'地铁:\n'
|
|
|
|
|
'乘坐5号线、6号线,在文化中心站下,步行500米即到。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'自驾\n'
|
|
|
|
|
'1.文化中心东侧停车场(位于中华剧院与天津图书馆之间),步行400米即到。\n'
|
|
|
|
|
'2. 万象城附近地上或地下停车场,步行600米即到。\n'
|
|
|
|
|
'3. 如遇周六日或节假日参观高峰,平江道马路两侧可单排停车。\n'
|
|
|
|
|
'因观众较多,建议您选择公共交通出行。\n',
|
|
|
|
|
style: TextStyle(fontSize: 18),
|
|
|
|
|
textAlign: TextAlign.justify,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 构建自定义按钮的函数
|
|
|
|
|
Widget _buildCustomButton(
|
|
|
|
|
String buttonText,
|
|
|
|
|
double height,
|
|
|
|
|
double horizontalOffset,
|
|
|
|
|
void Function() onPressed,
|
|
|
|
|
) {
|
|
|
|
|
return Align(
|
|
|
|
|
alignment: Alignment(horizontalOffset, 0),
|
|
|
|
|
child: SizedBox(
|
|
|
|
|
height: height,
|
|
|
|
|
child: ElevatedButton(
|
|
|
|
|
onPressed: onPressed,
|
|
|
|
|
style: ElevatedButton.styleFrom(
|
|
|
|
|
backgroundColor: Colors.green,
|
|
|
|
|
padding: const EdgeInsets.symmetric(
|
|
|
|
|
horizontal: 12,
|
|
|
|
|
vertical: 10,
|
|
|
|
|
class Service1 extends StatelessWidget {
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return Center(
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: const EdgeInsets.symmetric(horizontal: 20),
|
|
|
|
|
child: Text(
|
|
|
|
|
'01.\n'
|
|
|
|
|
'天津博物馆向社会公众免费开放,观众可在网上提前七日预约门票。预约成功后,可凭预约码及'
|
|
|
|
|
'有效证件,包括本人二代身份证、港澳台居民居住证、天津市第三代社保卡原件刷证入馆。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'2.\n'
|
|
|
|
|
'正常开放时间:每周二至周日9:00—16:30,16:00停止领票(周一闭馆)\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'3.\n'
|
|
|
|
|
'酗酒者、衣冠不整者以及无行为能力或限制行为能力者、无监护人陪伴的,谢绝入馆。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'4.\n'
|
|
|
|
|
'请自觉接受入馆安检以保证您的人身安全和博物馆的文物安全。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'5.\n'
|
|
|
|
|
'管制械具、打火机等易燃易爆品以及宠物禁止入馆,请您提前自行处理。'
|
|
|
|
|
'\n'
|
|
|
|
|
'6.\n'
|
|
|
|
|
'请您将随身携带的箱包等大件行李到存包处(或存衣处)存放,不能带入展厅,贵重物品请自行妥善保管。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'7.\n'
|
|
|
|
|
'请您不要将饮料、食品等带入展厅。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'8.\n'
|
|
|
|
|
'参观时请您自觉遵守参观秩序,不要大声喧哗,以免影响其他观众。请将手机设置为静音。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'9.\n'
|
|
|
|
|
'参观时请您不要触摸文物及展品。展厅内不允许摄像、个人直播等活动,拍照请勿使用三脚架、闪光灯等专业器材。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'10.\n'
|
|
|
|
|
'场馆内禁止吸烟,请您自觉维护环境卫生,勿丢弃杂物。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'11.\n'
|
|
|
|
|
'请不要在场馆内奔跑追逐、攀爬躺卧,并请您照顾好老人和儿童,我们大家共同维护良好的参观秩序和参观环境。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'12.\n'
|
|
|
|
|
'如遇各类突发事件,请服从工作人员指挥。\n',
|
|
|
|
|
style: TextStyle(fontSize: 18),
|
|
|
|
|
textAlign: TextAlign.justify,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class Service2 extends StatelessWidget {
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return Center(
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: const EdgeInsets.symmetric(horizontal: 20),
|
|
|
|
|
child: Column(
|
|
|
|
|
children: [
|
|
|
|
|
Text(
|
|
|
|
|
' 个人通过网上预约,团体通过电话预约的方式进馆参观\n'
|
|
|
|
|
'\n'
|
|
|
|
|
' 1.微信公众号预约\n'
|
|
|
|
|
' 微信关注“天津博物馆”或者“天津博物馆TJM”微信公众号,点击“参观天博”菜单进行预约,选择\n'
|
|
|
|
|
'合适的场次前来参观。',
|
|
|
|
|
style: TextStyle(fontSize: 18),
|
|
|
|
|
textAlign: TextAlign.justify,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
child: Text(
|
|
|
|
|
buttonText,
|
|
|
|
|
style: const TextStyle(
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
fontSize: 18,
|
|
|
|
|
SizedBox(height: 20), // 添加垂直间距
|
|
|
|
|
_buildImage('assets/service1.png', 200, 10),
|
|
|
|
|
SizedBox(height: 30), // 添加垂直间距
|
|
|
|
|
Text(
|
|
|
|
|
'2.通过微信“天博票务”小程序进行预约\n',
|
|
|
|
|
style: TextStyle(fontSize: 18),
|
|
|
|
|
textAlign: TextAlign.justify,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
_buildImage('assets/service2.png', 200, 10),
|
|
|
|
|
SizedBox(height: 30),
|
|
|
|
|
Text(
|
|
|
|
|
'3.通过美团平台,搜索天津博物馆进行预约\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'4.电话预约(仅限团体)\n'
|
|
|
|
|
'提供团体参观预约服务:15人以上团体参观,可至少提前一天拨打天津博物馆前台咨询电话83883000预约团体票。参观当天,预约人持本人身份证即可领取团体参观票。\n'
|
|
|
|
|
'您如需提供讲解服务,请拨打天津博物馆咨询电话83883000进行预约。\n'
|
|
|
|
|
'如因临时举办重大活动或特展致使预约后无法正常换领当日免费参观门票,我们将提前通过天津博物馆官方网站向社会进行公示。 请您参观前注意浏览天津博物馆官方网站发布的相关信息,合理安排参观行程。\n',
|
|
|
|
|
style: TextStyle(fontSize: 18),
|
|
|
|
|
textAlign: TextAlign.justify,
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Service3 extends StatelessWidget {
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return Scaffold(
|
|
|
|
|
appBar: AppBar(
|
|
|
|
|
title: const Text('服务'),
|
|
|
|
|
backgroundColor: Colors.green,
|
|
|
|
|
),
|
|
|
|
|
backgroundColor: Colors.white,
|
|
|
|
|
body: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center, // 使所有按钮在垂直方向上居中
|
|
|
|
|
children: [
|
|
|
|
|
_buildCustomButton('交通指南', 100, 0, () {
|
|
|
|
|
Navigator.of(context).push(
|
|
|
|
|
MaterialPageRoute(
|
|
|
|
|
builder: (context) => service0(),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}),
|
|
|
|
|
SizedBox(height: 10),
|
|
|
|
|
_buildCustomButton('参观须知', 100, 0, () {
|
|
|
|
|
Navigator.of(context).push(
|
|
|
|
|
MaterialPageRoute(
|
|
|
|
|
builder: (context) => service1(),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}),
|
|
|
|
|
SizedBox(height: 10),
|
|
|
|
|
_buildCustomButton('票务信息', 100, 0, () {
|
|
|
|
|
Navigator.of(context).push(
|
|
|
|
|
MaterialPageRoute(
|
|
|
|
|
builder: (context) => service2(),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}),
|
|
|
|
|
SizedBox(height: 10),
|
|
|
|
|
_buildCustomButton('服务接待', 100, 0, () {
|
|
|
|
|
Navigator.of(context).push(
|
|
|
|
|
MaterialPageRoute(
|
|
|
|
|
builder: (context) => service3(),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}),
|
|
|
|
|
],
|
|
|
|
|
return Center(
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: const EdgeInsets.symmetric(horizontal: 20),
|
|
|
|
|
child: Text(
|
|
|
|
|
'提供团体参观预约服务:15人以上团体参观,可至少提前一天拨打天津博物馆前台咨询电话83883000预约团体票。参观当天,预约人持本人身份证即可领取团体参观票。\n'
|
|
|
|
|
'天津博物馆为个人观众及团体观众提供收费讲解服务。需要此项服务的单位或个人需提前三天拨打天津博物馆前台咨询电话83883000进行预约。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'天津博物馆常设三个基本陈列:《天津人文的由来》(古代天津)、《中华百年看天津》(近代天津)和《耀世奇珍——馆藏文物精品陈列》,重点展示天津在中国近代化进程中的历史意义和重要地位,以及中华民族在数千年文明进程中积淀的丰厚物质遗存。近年来,依托天津博物馆藏资源,特别策划展出书法、绘画、瓷器、玉器、民间艺术等文物艺术品专题陈列。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'1.\n'
|
|
|
|
|
'行动不便的残障人士或老年人可在天津博物馆前台设置的租赁服务点免费借用轮椅。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'2.\n'
|
|
|
|
|
'轮椅借用服务的提供时间为每日9:00-16:00,借用人须于借用当日离馆前办理归还手续。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'3.\n'
|
|
|
|
|
'符合条件的借用人须在陪护人员陪同下办理轮椅借用手续。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'4.\n'
|
|
|
|
|
'办理借用手续时,借用人须出示并抵押本人有效身份证件(如身份证、军官证、驾驶证、护照等,老年证除外),残障人士还须出示有效的残疾人证件。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'5.\n'
|
|
|
|
|
'借用轮椅时,借用人应按人民币200元/辆的标准缴纳押金。使用完毕后,借用人凭押金收据至前台服务点办理归还手续,并取回押金。借用过程中产生损坏或遗失的,除不可抗力外,借用人应按实际损失向天津博物馆赔付,天津博物馆有权从借用押金中抵扣赔款。\n'
|
|
|
|
|
'\n'
|
|
|
|
|
'6.\n'
|
|
|
|
|
'借用人须按照使用说明或工作人员指导正确使用轮椅,并遵守馆内各项管理规定。因借用人使用不当造成的人身伤害或财产损失,由借用人自行承担责任。\n',
|
|
|
|
|
style: TextStyle(fontSize: 18),
|
|
|
|
|
textAlign: TextAlign.justify,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget _buildImage(String imagePath, double height, double verticalOffset) {
|
|
|
|
|
return Center(
|
|
|
|
|
child: SizedBox(
|
|
|
|
|
height: height,
|
|
|
|
|
child: Transform.translate(
|
|
|
|
|
offset: Offset(0, verticalOffset),
|
|
|
|
|
child: Transform.scale(
|
|
|
|
|
scale: 1.2,
|
|
|
|
|
child: Image.asset(
|
|
|
|
|
imagePath,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|