Coder Social home page Coder Social logo

iamsahdeep / liquid_swipe_flutter Goto Github PK

View Code? Open in Web Editor NEW
1.2K 13.0 156.0 53.36 MB

A flutter based liquid swipe

License: Apache License 2.0

Objective-C 0.05% Dart 96.96% Kotlin 0.15% Swift 1.44% HTML 1.40%
flutter flutter-plugin flutter-ui flutter-apps flutter-package flutter-widget flutter-material flutter-app

liquid_swipe_flutter's People

Contributors

allcontributors[bot] avatar byneapp avatar edtheguy00 avatar iamsahdeep avatar jeaanlucas avatar jjclane avatar mourad-brahim avatar prayag-x avatar ricotarascio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

liquid_swipe_flutter's Issues

onPageChangeCallback is not required

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.

1.4.2 xcode ios bug

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

Reverse!

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...

Request to Add Product in Start Flutter

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.

Slide is 0.5x wrong when running in landscape mode.

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,
            )
    );
  }
}

Disable swipe

Hello it's possible to disable the swipe and use only "animateToPage" ?

`liquid_swipe` does not specify a Swift version

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.

Package having an issue while installing

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```

When trying to update initalPage via setState, its not working.

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 ...

1.4.1 new bug

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(
^^^^

Can't use currentPage in build function since provider is late

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)
...

Liquid Swipe causes 2 rebuilds

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?

Automaticly change page

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.

Better with SizedBox

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

CheckboxListTile Gesture isn't working inside the liquid swipe widget

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,
              ),

add two arrow in left and right

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

Slider on LiquidSwipe

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.

Alt Text

Thank you for time.

inside liquid_swipe scrolling widgets are not working

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 ((((

Add support for onFirstLaunch

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.

JumpToPage does not jump to previous pages at the last index

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?

current page index

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 ?

pageChangeCallback not working

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.

It's awesome ❤️

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.

Better reverse animation?

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?

Listview as children

Option to include ListView/GridView/PageView as children with top-down swipe gesture capabilities.

add arrow icon with next background color

Screen Shot 2020-04-08 at 1 40 28 AM

how to add this wive icon to be as same as screenshot shows not that when transition finished there will be some right pixels that show the right screen color with arrow icon

Update information on flutter pub.dev page and example

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.

LiquidReveal splits my screen into components and doesn't work with a ListView

Screenshot_20200729_214605

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?

page being built too early

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;
});
}
}

Fast swiping

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

Bottom overflow with custom slideIconWidget

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"),
                    )
                  ],
                )

The IDE does not detect the package

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)

type 'List<Widget>' is not a subtype of type 'List<Container>'

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)

Scroll have a finicky feeling and bugs

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 ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.