Coder Social home page Coder Social logo

Comments (5)

samfriend avatar samfriend commented on July 28, 2024 8

my code in detecting the current state of the bottomsheet. I only have 2 snap points, Full height and zero height, so the % should be 1 and 0.

Be careful tho if you have snap points [100%,30%,0], the call back sometimes will NOT be exactly 30% e.g. 29.999999 ....

bottomSheetCallback = ([value]) => {
    //1 is closed, 0 is opened
    if (value === 1) {
       //closed
    }
    if (value === 0) {
      //opened
    }
}

render() {
    return (
        <View style={{position: 'absolute', bottom: 0, left: 0, height: containerHeight, width: containerWidth}} pointerEvents={'box-none'}>
            <BottomSheet
                ref={ref => this.bottomSheet = ref}
                snapPoints={[COMMONS.DEVICE_HEIGHT, 0]}
                initialSnap={1}
                callbackNode={this.value_fall}
                renderHeader={this.renderHeader}
            />
            <Animated.Code
                exec={
                    block([
                        cond(eq(this.value_fall, 0), call([this.value_fall], this.bottomSheetCallback)),
                        cond(eq(this.value_fall, 1), call([this.value_fall], this.bottomSheetCallback)),
                        // Animated.call([this.value_fall], this.logNativeValue ),        // 1 close -> 0 when open
                        set(this.value_backdrop, sub(1, this.value_fall)),                //backdrop opacity, 1 - %
                    ])

                }/>
            {/*Overlay shadow*/}
            {this.props.store.NavigationStore.isApplicationCameraVisible ? (
                <Animated.View style={{
                    position: 'absolute', top: 0, bottom: 0, left: 0, right: 0,
                    opacity: this.value_backdrop,
                    backgroundColor: '#000'
                }}
                   pointerEvents={'none'}
                />
            ) : null}

        </View>
    );

from react-native-reanimated-bottom-sheet.

samfriend avatar samfriend commented on July 28, 2024

Use the callbackNode

from react-native-reanimated-bottom-sheet.

obetomuniz avatar obetomuniz commented on July 28, 2024

Hi @samfriend, thanks for your reply. Can you give me an example of usage? It's not clear how to use this feature.

from react-native-reanimated-bottom-sheet.

obetomuniz avatar obetomuniz commented on July 28, 2024

Hmmm so in this case, I need to add react-native-reanimated as a direct dependency, right? That is what I was trying to avoid, anyway, looks like necessary. Thanks for the explanation and clear example.

from react-native-reanimated-bottom-sheet.

chengsokdara avatar chengsokdara commented on July 28, 2024

my code in detecting the current state of the bottomsheet. I only have 2 snap points, Full height and zero height, so the % should be 1 and 0.

Be careful tho if you have snap points [100%,30%,0], the call back sometimes will NOT be exactly 30% e.g. 29.999999 ....

bottomSheetCallback = ([value]) => {
    //1 is closed, 0 is opened
    if (value === 1) {
       //closed
    }
    if (value === 0) {
      //opened
    }
}

render() {
    return (
        <View style={{position: 'absolute', bottom: 0, left: 0, height: containerHeight, width: containerWidth}} pointerEvents={'box-none'}>
            <BottomSheet
                ref={ref => this.bottomSheet = ref}
                snapPoints={[COMMONS.DEVICE_HEIGHT, 0]}
                initialSnap={1}
                callbackNode={this.value_fall}
                renderHeader={this.renderHeader}
            />
            <Animated.Code
                exec={
                    block([
                        cond(eq(this.value_fall, 0), call([this.value_fall], this.bottomSheetCallback)),
                        cond(eq(this.value_fall, 1), call([this.value_fall], this.bottomSheetCallback)),
                        // Animated.call([this.value_fall], this.logNativeValue ),        // 1 close -> 0 when open
                        set(this.value_backdrop, sub(1, this.value_fall)),                //backdrop opacity, 1 - %
                    ])

                }/>
            {/*Overlay shadow*/}
            {this.props.store.NavigationStore.isApplicationCameraVisible ? (
                <Animated.View style={{
                    position: 'absolute', top: 0, bottom: 0, left: 0, right: 0,
                    opacity: this.value_backdrop,
                    backgroundColor: '#000'
                }}
                   pointerEvents={'none'}
                />
            ) : null}

        </View>
    );

Is it possible to get index when there are more than 2 snapPoints?

from react-native-reanimated-bottom-sheet.

Related Issues (20)

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.