iamsahdeep / liquid_swipe_flutter Goto Github PK
View Code? Open in Web Editor NEWA flutter based liquid swipe
License: Apache License 2.0
A flutter based liquid swipe
License: Apache License 2.0
hosted/pub.dartlang.org/liquid_swipe-1.5.0/lib/Constants/Helpers.dart': No such file or directory
import 'package:liquid_swipe/Constants/Helpers.dart';
Good morning,
I was using your lib for a small app but for me I need to change the arrow style and it's not available.
It's nice if you implement this
I want it to be ListView not List
how do I figure out this?
pages: List is useless for me..
Make it required, or remove the following line:
assert(onPageChangeCallback != null),
I don't need this callback for my design, so ideally it should not be required at all.
Bro please make a unity package for this.
For unity developers.
error: /Users/hesham/.pub-cache/git/liquid_swipe_flutter-5702d1e3fbd62b7582277580a154152f773704fd/ios/Classes/LiquidSwipePlugin.h: No such file or directory (in target 'liquid_swipe' from project 'Pods')
Showing All Messages
/Users/hesham/.pub-cache/git/liquid_swipe_flutter-5702d1e3fbd62b7582277580a154152f773704fd/ios/Classes/LiquidSwipePlugin.h: No such file or directory
How do I turn off the reverse feature? Is there any parameter or method in this package?
I want it to stop when it comes to the last page.
By the way, i like this so much...
Hello,
I am Maheshwari from team GeekyAnts.
On behalf of Start Flutter, we add open source products which we find helpful to the community & also we provide credits to author itself.
Let me know if you are interested showcase your product in our open source website.
Looking forward to hear from you.
Hi! I got an issue with the liquidController. When I use it in landscape mode the center of the swipe animation is on the point between where I got my finger and the top of the screen.
Example video:
https://youtu.be/KW8fPtMRaV4
The same issue is present when we start in landscape mode without any rotation in between.
class Quiz extends StatefulWidget {
static const routeName = "/Quiz";
static const rotation = ScreenOrientation.landscapeOnly;
@override
_QuizState createState() => _QuizState();
}
class _QuizState extends State<Quiz> {
LiquidController liquidController;
UpdateType updateType;
List<Widget> questions = [
Question(text: "1",),
Question(text: "2",),
Question(text: "3",)
];
@override
void initState() {
liquidController = LiquidController();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: LiquidSwipe(
pages: questions,
onPageChangeCallback: (int page) => {print("Page: " + page.toString())},
waveType: WaveType.liquidReveal,
liquidController: liquidController,
ignoreUserGestureWhileAnimating: true,
enableSlideIcon: true,
fullTransitionValue: 800,
positionSlideIcon: 0.0,
)
);
}
}
Would be possible to set the position for the arrow?
Im getting FOUT in the ui when I scroll right, if I scroll right it works perfectly
Hello it's possible to disable the swipe and use only "animateToPage" ?
I receive this one:
liquid_swipe
does not specify a Swift version and none of the targets (Runner
) integrating it have the SWIFT_VERSION
attribute set. Please contact the author or set the SWIFT_VERSION
attribute in at least one of the targets that integrate this pod.
flutter doctor
is fine and i run flutter clean
.
I think it has something to do with removing and readding the plugin, because it did work once. However, I'm new to this and am not sure how to go about that.
Running "flutter pub get" in liquid_swipe...
Error on line 14, column 3 of pubspec.yaml: A package may not list itself as a dependency.
╷
14 │ liquid_swipe:
│ ^^^^^^^^^^^^
╵
pub get failed (65; ╵)
exit code 65```
I wish to add a skip button on the page. normally I would change the initialPage
value but its not working.
LiquidSwipe(
initialPage: page,
pages: pages,
enableLoop: false,
enableSlideIcon: (page != pages.length -1) ? true : false,
fullTransitionValue: 400,
waveType: WaveType.liquidReveal,
slideIconWidget: SvgPicture.asset(
"assets/icons/md-cheveron-left.svg",
height: 20.0,
color: slideIconColor,
),
positionSlideIcon: 0.5,
onPageChangeCallback: pageChangeCallback
),
call for pageChangeCallback
pageChangeCallback(int lpage) {
print(lpage);
setState(() {
page = lpage;
switch (lpage) {
case 0:
slideIconColor = Colors.black;
break;
case 1:
slideIconColor = Colors.white;
break;
case 2:
slideIconColor = Colors.blue;
break;
case 3:
slideIconColor = Colors.red;
break;
default:
slideIconColor = Colors.black;
}
});
}
How to skip the entire slides if user wish too ...
A part of screen already show which is not customizable 😞
On press of screen it just acts weird which is not expected...
I am looking for same liquid animation but vertically from top to bottom or bottom to top. Is there a way to do this?
hi , i have delated pub-cache folder to insure that all old packages are updated but still get this error in last version .
i'm using android studio
Compiler message:
../../.pub-cache/hosted/pub.dartlang.org/liquid_swipe-1.4.1/lib/liquid_swipe.dart:77:17: Error: 'Page' is imported from both 'package:flutter/src/widgets/navigator.dart' and 'package:liquid_swipe/PageHelpers/page.dart'.
Page(
^^^^
../../.pub-cache/hosted/pub.dartlang.org/liquid_swipe-1.4.1/lib/liquid_swipe.dart:86:26: Error: 'Page' is imported from both 'package:flutter/src/widgets/navigator.dart' and 'package:liquid_swipe/PageHelpers/page.dart'.
child: Page(
^^^^
We should be able to use currentPage in build function to act differently depending on the current page. However, since provider is late, this causes an exception in the first build. Here is the exception when you try to use currentPage in build()
======== Exception caught by widgets library =======================================================
The following LateError was thrown building LandingPage(dirty, dependencies: [MediaQuery], state: _LandingPageState#31358):
LateInitializationError: Field 'provider' has not been initialized.
The relevant error-causing widget was:
LandingPage file:///xxx/lib/main.dart:47:13
When the exception was thrown, this was the stack:
#0 LiquidController.provider (package:liquid_swipe/PageHelpers/LiquidController.dart)
#1 _LandingPageState.build (package:xxx/view/landing/landing_view.dart:281:52)
#2 StatefulElement.build (package:flutter/src/widgets/framework.dart:4612:27)
#3 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4495:15)
#4 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4667:11)
...
Hello, i'm trying to implement a timer within this awesome plugin, but the problem is that when the timer finishes, liquid swipe makes the timer being called twice, but without liquid swipe, when the timer finishes, is not being called twice.
With the following code the 'Finished.' line prints two times.
Example code:
page1.dart
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
backgroundColor: Colors.white,
body: LiquidSwipe(
pages: [
Container(
height: double.infinity,
width: double.infinity,
color: Colors.blue,
child: Text('First page'),
),
Container(
height: double.infinity,
width: double.infinity,
color: Colors.white,
child: CustomTimer(
from: Duration(seconds: 5),
to: Duration(seconds: 0),
onFinishAction: CustomTimerAction.auto_start,
onBuildAction: CustomTimerAction.auto_start,
onFinish: () {
print('Finished.');
},
builder: (CustomTimerRemainingTime remaining) {
return Column(
children: [
Container(
child: Text(
'${remaining.hours}:${remaining.minutes}:${remaining.seconds}',
style: TextStyle(
color: Colors.black,
fontSize: 30,
fontWeight: FontWeight.bold,
),
),
)
],
);
},
),
)
],
),
),
);
}
}
Any workaround?
There is no null check in this line:
widget.currentUpdateTypeCallback(event.updateType);
Ideally, this callback should not be required.
Hey,
Thank you for this package, the animation is beautiful but it is only available from a drag gesture.
Could you implement programitcly changing the page ? It would serve so much more cases.
On your example, if we remove the image taking the full with we won't fill the container. I think it'd be nicer having SizedBox
:
Container(
color: Colors.pink,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
SizedBox(
width: double.infinity,
child: Column(
children: <Widget>[
new Text(
"Hi",
style: TextStyle(
fontSize: 30,
fontFamily: "Billy",
fontWeight: FontWeight.w600),
),
],
),
)
],
),
),
I still too new with Flutter so not sure if this is the most optimal solution
I have a liquid swipe widget ( not builder ) that gets it's pages from List<Widgets> pages
I populate it in the initState
method,
everything is displaying correctly, also the CheckboxListTile is displayed right, but when I go to click on the CheckboxListTile notihng happans, it's like the gesture of it gets disabled once it's in the liquid swipe.
I check my self and the same screen/widget that in the liquid swipe outside of it and it works perfectly, but when it's inside he liquid swipe, it wont work.
This is my liquid Swipe widget:
LiquidSwipe(
pages: pages,
positionSlideIcon: 0.8,
slideIconWidget: SizedBox(
height: 25,
width: 50,
child: Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.black)
),
),
),
onPageChangeCallback: pageChangeCallback,
waveType: WaveType.liquidReveal,
liquidController: _liquidController,
ignoreUserGestureWhileAnimating: false,
disableUserGesture: false,
),
please can you add two arrow to be like slider to swipe from right of left , cuz i'm using RTL and i want to show the icon on left side
Hi Sir, thank you for doing great job you made very nice and beautiful, I really like it, I was wishing to use in some of my project and I am doing right now.
I am in trouble I am trying to get two container in LiquidSwipe one for MP3 Player and 2nd for PlayList, I am trying to place Slider as seekbar, but I am unable to drag seekbar back or forward, its work fine by tapping but unable to drag it, even I set disableUserGesture:true
still unable to drag, I need your help.
Thank you for time.
this is my widget that I fill out the list of pages
animation_card.txt
here in this part of the code I inserted a scrollable element.
Flexible( child: SingleChildScrollView( child: Text( describe, style: TextStyle( fontSize: 16, ), textAlign: TextAlign.justify, overflow: TextOverflow.visible, ), ), )
information is cropped, and does not scroll ((((
First of all, amazing work, much appreciated. I'm very new to flutter, as an onboarder adding something like onFirstLaunch would be a much needed feature. Since onboarders in most apps are mostly triggered only once during initial setup.
I was able to use PreferenceManager to implement this use-case. Can you help me with transitioning to homescreen from last page of the onboarder.
This is a very nice plugin, thank you! When I want to jump from right to left (from the last page to the first one),
liquidController.jumpToPage(page: 0);
the current behavior prevent me doing it, unless enableLoop
is set to be true
, is that designed to be so?
I use this carousel: https://pub.dev/packages/carousel_slider
If I try to swipe it, it swipes the page. I tried it before on tabs and when I swiped on it, it didn't swipe the tab, only when I swipe outside the carousel.
Also it creates some curved line which doesn't look ok.
Hello
is there any way that I could know the current page Index ?
To be More clear I need to know if the page has been changed and what is the index of the page that changed into ?
Hi, thanks for the plugin.
Implementing the example code you provided, I noticed that the two callback functions - pageChangeCallback and currentUpdateTypeCallback do not return anything.
pageChangeCallback works only when the app loads, and it says prints page = 0 to console, but after that it does not print anything else. That is, when you swipe, the pageChangeCallback is not called.
NB: I'm trying to implement dot indicators which requires the current page index.
I have been using this library in a couple of projects and it always shines out. Easy to use and tweak. Also, I was checking your other projects and those are awesome too. So, a huge thanks from my side. Keep Hacking.
First of all, great work and great package.This feels a bit like nitpicking, but are you considering a better animation for when swiping back ( from left to right ) ?.Like the same animation, but from the left side to accommodate swiping in any direction?
Option to include ListView/GridView/PageView as children with top-down swipe gesture capabilities.
The repository and the pub dev page shows different versions of the liquid swipe package to add to the pubspec.yaml file.
pub.dev site shows
dependencies: liquid_swipe: ^1.4.3
The main readme in the gthub repo shows
dependencies: liquid_swipe: ^1.5.0-dev.1
While the example in the github repo mentions to import an even older version of the package. Following the example, I was getting an error about
No such class/definition about LiquidController
This was because the example code was written according to the latest version i.e. 1.5.0-dev.1. Kindly update all instances of this.
https://dart.dev/null-safety/migration-guide
Null safety comes with many advantages (which has been talked about in today's Flutter livestream), and it will probably be the default in the future.
It would be appreciated if this package can be migrated to null safety.
Hello! love the package!
I was just wondering if you could help me with the issue above.
@override Widget build(BuildContext context) { final myModel = Provider.of<MyModel>(context, listen: false); return new MaterialApp( debugShowCheckedModeBanner: false, home: new Scaffold( body: LiquidSwipe( liquidController: myModel.liquidController, initialPage: myModel.page, waveType: WaveType.liquidReveal, pages: pages, fullTransitionValue: 700, enableSlideIcon: false, enableLoop: true, ), ), ); } }
After I swipe from one page to the other, I get some background changes in the shape of the LiquidReveak animation which wasn't a big issue until I tried to add a ListView and then the screenshot happened. I tried to McGyver a solution by maybe using a ScrollController and setState at all times but no luck.
I tried the circeReveal and I do not get this issue. Only on the liquidReveal.
any ideas on how I could fix it?
Hi Sahdeep,
Thank you for an amazing package. Im having a slight issue with the rendering as you can see from the gif. I followed your example code exactly but don't seem to be able to stop the next and previous screens from rendering at the same time.
Thanks,
G
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 1.22.0, on Mac OS X 10.15.6 19G2021, locale
en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version
29.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 12.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 3.6)
[✓] VS Code (version 1.49.3)
[✓] Connected device (4 available)
• No issues found!
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:liquid_swipe/liquid_swipe.dart';
import 'package:oto/features/login/presentation/login_ui.dart';
import 'package:oto/features/onboarding/presentation/onboarding_widgets.dart';
import 'package:oto/main.dart';
import 'package:oto/shared/colors.dart';
class OnboardingNav extends StatefulWidget {
@OverRide
_OnboardingNavState createState() => _OnboardingNavState();
}
class _OnboardingNavState extends State {
int page = 0;
LiquidController liquidController;
UpdateType updateType;
List titleText;
@OverRide
void initState() {
liquidController = LiquidController();
super.initState();
}
final pages = [
Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Text(
"Welcome to Oto",
),
Image.asset(
"assets/images/logos/logo_na.png",
),
Text(
"Your personal tinnitus companion",
)
],
),
),
Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Text(
"Professional Therapy",
),
Image.asset(
"assets/images/onboarding/onboard_1.png",
),
Text(
"Discover Oto's guided therapy programme created specifically to help your tinnitus",
)
],
),
),
LoginScreen()
];
List colors = [accentColor, primaryColor, canvasColor];
@OverRide
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: [
LiquidSwipe(
enableSlideIcon: false,
enableLoop: false,
onPageChangeCallback: pageChangeCallback,
waveType: WaveType.liquidReveal,
liquidController: liquidController,
ignoreUserGestureWhileAnimating: true,
pages: pages,
),
if (page != pages.length - 1) ...[
Padding(
padding: EdgeInsets.all(20),
child: Column(
children: [
Expanded(child: SizedBox()),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(pages.length, _buildDot),
),
],
),
),
Align(
alignment: Alignment.bottomRight,
child: Padding(
padding: const EdgeInsets.all(25.0),
child: FlatButton(
onPressed: () {
liquidController.animateToPage(
page: pages.length - 1, duration: 500);
},
child: Text("Skip to End"),
color: Colors.white.withOpacity(0.01),
),
),
),
Align(
alignment: Alignment.bottomLeft,
child: Padding(
padding: const EdgeInsets.all(25.0),
child: FlatButton(
onPressed: () {
liquidController.jumpToPage(
page: liquidController.currentPage + 1);
},
child: Text("Next"),
color: Colors.white.withOpacity(0.01),
),
),
)
]
],
));
}
Widget _buildDot(int index) {
double selectedness = Curves.easeOut.transform(
max(
0.0,
1.0 - ((page ?? 0) - index).abs(),
),
);
double zoom = 1.0 + (2.0 - 1.0) * selectedness;
return new Container(
width: 25.0,
child: new Center(
child: new Material(
color: Colors.white,
type: MaterialType.circle,
child: new Container(
width: 8.0 * zoom,
height: 8.0 * zoom,
),
),
),
);
}
pageChangeCallback(int lpage) {
setState(() {
page = lpage;
});
}
}
First of all awesome widget. Thanks for it. It goes really smooth but sometimes, I need to go back on my app and start over. This is quite usual and the next swipe will be faster (before the animation for actual page finishes).
When I go a bit faster I face some "flash" with next page and automatically it opens ok.
I'm trying exactly the example you posted here: https://github.com/iamSahdeep/liquid_swipe_flutter/tree/master/example
So it seems like the implicit constraint of the parameters size property is not really clear? I'm using an additional text below the icon to make it clearer that the icon is used to reach the next page. On the iPhone simulator it seems to be too big for the slideIconWidget parameters. It's not really clear why that is the case.
My slideIconWidget:
Column(
children: <Widget>[
Icon(Icons.arrow_back_ios),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: Text("Continue"),
)
],
)
I am just adding the package to the pubspec.yaml, then running flutter pub get
and I cannot use this package at all.
[✓] Flutter (Channel stable, 2.0.4, on macOS 11.2.3 20D91 darwin-x64, locale en-PL)
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
✗ Android license status unknown.
Run `flutter doctor --android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] IntelliJ IDEA Community Edition (version 2020.3.2)
[✓] VS Code (version 1.56.2)
[✓] Connected device (3 available)
pages
is set as List<Widget>
but on the state you are expecting only List<Container>
flutter: When the exception was thrown, this was the stack:
flutter: #0 _LiquidSwipe.build (package:liquid_swipe/liquid_swipe.dart:61:21)
flutter: #1 StatefulElement.build (package:flutter/src/widgets/framework.dart:4334:27)
flutter: #2 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4223:15)
flutter: #3 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
Hello,
I have noticed this bug today
I tried to make the page scrollable (the container have a list view as child) and I noticed a ui bug that either feels like a duplicate so we have a view above a view or the content got sliced(cuts)
I want to ask if there is any solution to this bug or a work around ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.