Flutter票务展示插件flutter_ticket_widget的使用
Flutter-Ticket_Widget
一个帮助你在应用中实现票证小部件的新式Flutter包。
源代码为100% Dart,所有代码都位于/lib
文件夹中。
显示一些爱心并给仓库加星以支持项目
💻 安装
在pubspec.yaml
的dependencies:
部分添加以下行:
flutter_ticket_widget: <latest_version>
然后在你的项目中导入:
import 'package:flutter_ticket_widget/flutter_ticket_widget.dart';
❔ 基本用法
以下是一个完整的示例代码,展示了如何使用flutter_ticket_widget
来创建票证界面:
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: Center(
child: FlutterTicketWidget(
// 设置票证的宽度和高度
width: 350.0,
height: 500.0,
isCornerRounded: true, // 是否将票证的四个角设置为圆角
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
// 上方的航班信息
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
// 左侧的舱位标签
Container(
width: 120.0,
height: 25.0,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(30.0),
border: Border.all(width: 1.0, color: Colors.green),
),
child: Center(
child: Text(
'Business Class',
style: TextStyle(color: Colors.green),
),
),
),
// 右侧的出发地和目的地图标
Row(
children: <Widget>[
Text(
'SLM',
style: TextStyle(
color: Colors.black, fontWeight: FontWeight.bold),
),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Icon(
Icons.flight_takeoff,
color: Colors.pink,
),
),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Text(
'BTL',
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold),
),
)
],
)
],
),
// 票证标题
Padding(
padding: const EdgeInsets.only(top: 20.0),
child: Text(
'Flight Ticket',
style: TextStyle(
color: Colors.black,
fontSize: 20.0,
fontWeight: FontWeight.bold),
),
),
// 票证详细信息
Padding(
padding: const EdgeInsets.only(top: 25.0),
child: Column(
children: <Widget>[
// 乘客和日期信息
ticketDetailsWidget(
'Passengers', 'Ilona', 'Date', '24-12-2018'),
// 航班号和登机口信息
Padding(
padding: const EdgeInsets.only(top: 12.0, right: 40.0),
child: ticketDetailsWidget(
'Flight', '76836A45', 'Gate', '66B'),
),
// 座位和舱位信息
Padding(
padding: const EdgeInsets.only(top: 12.0, right: 40.0),
child: ticketDetailsWidget(
'Class', 'Business', 'Seat', '21B'),
),
],
),
),
// 条形码区域
Padding(
padding: const EdgeInsets.only(top: 80.0, left: 30.0, right: 30.0),
child: Container(
width: 250.0,
height: 60.0,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/barcode.png'),
fit: BoxFit.cover)),
),
),
// 票证底部的数字序列
Padding(
padding:
const EdgeInsets.only(top: 10.0, left: 75.0, right: 75.0),
child: Text(
'9824 0972 1742 1298',
style: TextStyle(
color: Colors.black,
),
),
)
],
),
),
),
),
);
}
// 用于生成票证详细信息的小部件
Widget ticketDetailsWidget(String firstTitle, String firstDesc,
String secondTitle, String secondDesc) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(left: 12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
firstTitle,
style: TextStyle(
color: Colors.grey,
),
),
Padding(
padding: const EdgeInsets.only(top: 4.0),
child: Text(
firstDesc,
style: TextStyle(
color: Colors.black,
),
),
)
],
),
),
Padding(
padding: const EdgeInsets.only(right: 20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
secondTitle,
style: TextStyle(
color: Colors.grey,
),
),
Padding(
padding: const EdgeInsets.only(top: 4.0),
child: Text(
secondDesc,
style: TextStyle(
color: Colors.black,
),
),
)
],
),
)
],
);
}
}
Screenshots
Flutter Ticket Widget | Example UI |
---|---|
![]() |
![]() |
💰 捐赠
这个项目需要你的支持!如果你希望支持这个项目的进一步发展、维护者的工作或项目的持续维护,可以自由捐赠。你的捐赠将非常有价值(我喜欢茶、咖啡和啤酒)。谢谢!
- PayPal
- Donate $5: 感谢你创建这个项目,这里有一杯茶(或果汁)给你!
- Donate $10: 哇,我感到震惊。让我们去看电影吧!
- Donate $15: 我真的很感激你的工作,让我们一起吃午餐!
- Donate $25: 那太棒了,晚餐我请客!
- Donate $50: 我真的想支持这个项目,干得好!
- Donate $100: 你是英雄!这个项目节省了我数小时甚至数天的努力,太棒了!
- Donate $2799: 给自己买一台MacBook Pro吧!
当然,你可以选择任何金额进行捐赠,所有的捐赠都是令人鼓舞的!
👨 开发者
Mohak Gupta



👍 如何贡献
- Fork 该项目。
- 创建一个新的功能分支 (
git checkout -b my-new-feature
)。 - 提交更改 (
git commit -am '添加一些功能'
)。 - 推送到分支 (
git push origin my-new-feature
)。 - 创建新的 Pull Request。
📃 许可证
Copyright (c) 2019 Mohak Gupta
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
更多关于Flutter票务展示插件flutter_ticket_widget的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter票务展示插件flutter_ticket_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_ticket_widget
是一个用于在 Flutter 应用中展示票务信息的插件。它提供了一个可自定义的票务样式,可以用于展示电影票、活动票、火车票等。以下是如何使用 flutter_ticket_widget
的基本步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_ticket_widget
依赖:
dependencies:
flutter:
sdk: flutter
flutter_ticket_widget: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入包
在你的 Dart 文件中导入 flutter_ticket_widget
:
import 'package:flutter_ticket_widget/flutter_ticket_widget.dart';
3. 使用 FlutterTicketWidget
FlutterTicketWidget
是一个可自定义的组件,你可以通过传递不同的参数来定制它的外观。
以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:flutter_ticket_widget/flutter_ticket_widget.dart';
class TicketPage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Ticket Widget Example'),
),
body: Center(
child: FlutterTicketWidget(
width: 300.0,
height: 500.0,
isCornerRounded: true,
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
'Movie Ticket',
style: TextStyle(
color: Colors.black,
fontSize: 20.0,
fontWeight: FontWeight.bold,
),
),
Text(
'\$10.00',
style: TextStyle(
color: Colors.black,
fontSize: 20.0,
fontWeight: FontWeight.bold,
),
),
],
),
SizedBox(height: 20.0),
Text(
'Movie: Avengers Endgame',
style: TextStyle(
color: Colors.black,
fontSize: 16.0,
),
),
SizedBox(height: 10.0),
Text(
'Date: 2023-10-15',
style: TextStyle(
color: Colors.black,
fontSize: 16.0,
),
),
SizedBox(height: 10.0),
Text(
'Time: 7:00 PM',
style: TextStyle(
color: Colors.black,
fontSize: 16.0,
),
),
SizedBox(height: 10.0),
Text(
'Seat: A12',
style: TextStyle(
color: Colors.black,
fontSize: 16.0,
),
),
],
),
),
),
),
);
}
}