Skip to content

Instantly share code, notes, and snippets.

@slamdon
slamdon / calculatePagePosition.dart
Last active February 17, 2020 02:12
calculatePagePosition
double _calculatePagePosition(int index) {
// 卡片在整個畫面顯示的百分比
final viewFraction = this.viewPortFraction ?? 1.0;
// 卡片大小(viewportDimension 是手機畫面的 width
final itemWidth = (this.scrollMetrics?.viewportDimension ?? 1.0) * viewFraction;
// 卡片在整個 scrollView 中移動的距離
final scrollX = this.scrollMetrics?.pixels ?? 0.0;
@slamdon
slamdon / _buildImageContainer.dart
Created February 17, 2020 00:26
_buildImageContainer
Widget _buildImageContainer() {
return Image.asset(
this.trip.imageUrl,
fit: BoxFit.cover,
alignment: Alignment(
this.tripPageVisibility.pagePosition,
0,
)
);
}
@slamdon
slamdon / home_page.dart
Created February 15, 2020 06:41
PageViewController - viewportFraction
Widget build(BuildContext context) {
return Center(
child: SizedBox.fromSize(
size: Size.fromHeight(550),
child: PageView.builder(
controller: PageController(viewportFraction: 0.8),
itemCount: trips.length,
itemBuilder: (context, index){
return TripPageItem(trip: trips[index]);
},
@slamdon
slamdon / home_page.dart
Last active February 15, 2020 06:33
PageView
@override
Widget build(BuildContext context) {
return Center(
child: SizedBox.fromSize(
size: Size.fromHeight(550),
child: PageView.builder(
itemCount: trips.length,
itemBuilder: (context, index){
return TripPageItem(trip: trips[index]);
},
@slamdon
slamdon / trip_page_item.dart
Last active February 15, 2020 06:18
RectWithPadding
return Padding(
padding: EdgeInsets.symmetric(
horizontal: 16,
),
child: ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Stack(
fit: StackFit.expand,
children: <Widget>[
image,
@slamdon
slamdon / trip_page_item.dart
Last active February 15, 2020 06:14
BuildTextContainer
Widget _buildTextContainer() {
var titleContainer = Text(
this.trip.title,
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
letterSpacing: 1.0,
fontSize: 14,
),
);
@slamdon
slamdon / trip_page_item.dart
Last active February 15, 2020 06:14
ImageOverlayGradient
var imageOverlayGradient = DecoratedBox(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: FractionalOffset.topCenter,
end: FractionalOffset.bottomCenter,
colors: [
Color.fromRGBO(0, 0, 0, 0),
Color.fromRGBO(0, 0, 0, 0.8),
],
),
@slamdon
slamdon / trip_page_item.dart
Last active February 15, 2020 06:13
Stack
return Container(
child: ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Stack(
fit: StackFit.expand,
children: <Widget>[
image,
imageOverlayGradient,
_buildTextContainer(),
],
@slamdon
slamdon / PageView.dart
Created February 13, 2020 13:46
PageView
Widget _getPageView() {
return pageView = PageView.builder(
itemCount: this.widget.imagePaths.length,
itemBuilder: (BuildContext context, int index) {
return Image(
image: AssetImage(this.widget.imagePaths[index]),
fit: BoxFit.cover,
);
},
onPageChanged: (index) {
@slamdon
slamdon / Indicator.dart
Created February 13, 2020 13:44
Indicator
Widget _getIndicator() {
return Code4Indicator(
dotCount: this.widget.imagePaths.length,
currentIndex: currentIndex,
dotColor: Color.fromRGBO(255, 255, 255, 1),
dotSelectedColor: Color.fromRGBO(255, 255, 255, 0.3),
dotPadding: 12,
dotSize: 14,
onItemTap: (index) {
pageController.jumpToPage(index);