Karthik-B-06 / react-native-segmented-control

🎉 React Native Segmented Control 🎮 for both iOS, Android and Web
https://www.npmjs.com/package/rn-segmented-control
MIT License
286 stars 32 forks source link

Conflict in Android with other react-native-reanimated versions? #39

Open relez opened 2 years ago

relez commented 2 years ago

Hi there, I am using this great package and I am enjoying how it works, but, it forces me to use react-native-reanimated version 2.3.1 which is a dependency here. If I install another version Android will throw Animated node with ID 2 already exists and app wont launch. Is there a way to allow user to pick which version of reanimated plugin to use?

Thanks!

laogui commented 2 years ago

I have same issue. then copy this package file to my project, it works.

import SegmentedControl from '../../components/SegmentedControl'

relez commented 2 years ago

One easy workaround is to make the reanimated plugin version match with the one required by the segmented control (based on latest version, v1.1.2).

yarn add react-native-reanimated@2.3.1

I hope it helps!

ddikodroid commented 2 years ago

anyone facing issue when changing the reanimated version above 2.3.1?

pechischev commented 2 years ago

I have the same issue.

"react-native-reanimated": "2.8.0" // in dependencies "react-native-reanimated": "2.9.1" // in resolutions after fix that bug

relez commented 2 years ago

My workaround was to download the source code, place it somewhere in my local computer and fix the version in the resolutions. Then specify the path in package.json like this:

"rn-segmented-control": "file:/path/to/package/react-native-segmented-control/" I hope it helps!

whatdtech commented 2 years ago

https://github.com/whatdtech/react-native-segmented-control

this is a modified version of this fork installation details are in readme file. works with latest expo and bare react native .70 version

exotexot commented 2 years ago

Hi,

with @whatdtech fork I was able to install it. However I get this error:

error: Error: Unable to resolve module deprecated-react-native-prop-types from /Users/vinzenz/Repositories/cat70refactor/node_modules/rn-segmented-control/src/segmentedControl/index.js: deprecated-react-native-prop-types could not be found within the project or in these directories: node_modules/rn-segmented-control/node_modules node_modules 1 | import PropTypes from "prop-types";

2 | import ViewPropTypes from "deprecated-react-native-prop-types"; | ^ 3 | import React, { useEffect } from "react"; 4 | import {

whatdtech commented 2 years ago

try **yarn add deprecated-react-native-prop-types** or `npm i deprecated-react-native-prop-types@2.2.0`** react-native-prop-types was deprecated and moved out of core react native

mars-lan commented 2 years ago

@whatdtech do you mind creating a PR if haven't done so already?

whatdtech commented 2 years ago

No problem in creating a PR. Few more issues are there to be sorted out.

exotexot commented 2 years ago

react-native info

info Fetching system and libraries information... System: OS: macOS 12.6 CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz Memory: 11.45 GB / 32.00 GB Shell: 3.3.1 - /usr/local/bin/fish Binaries: Node: 16.15.0 - ~/.nvm/versions/node/v16.15.0/bin/node Yarn: 1.22.10 - /usr/local/bin/yarn npm: 8.5.5 - ~/.nvm/versions/node/v16.15.0/bin/npm Watchman: 2022.03.21.00 - /usr/local/bin/watchman Managers: CocoaPods: 1.11.3 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: DriverKit 21.4, iOS 16.0, macOS 12.3, tvOS 16.0, watchOS 9.0 Android SDK: API Levels: 28, 29, 30 Build Tools: 29.0.2, 29.0.3, 30.0.3 System Images: android-29 | Intel x86 Atom_64, android-30 | Google APIs Intel x86 Atom Android NDK: Not Found IDEs: Android Studio: 4.1 AI-201.8743.12.41.7042882 Xcode: 14.0.1/14A400 - /usr/bin/xcodebuild Languages: Java: 1.8.0_242-release - /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/javac npmPackages: @react-native-community/cli: Not Found react: 18.1.0 => 18.1.0 react-native: 0.70.3 => 0.70.3 react-native-macos: Not Found npmGlobalPackages: react-native: Not Found

I'm using "react": "18.1.0", "react-native": "0.70.3", "rn-segmented-control": "github:whatdtech/react-native-segmented-control", "typescript": "^4.8.3" npm i deprecated-react-native-prop-types@2.2.0

I'm testing on iOS and macOS (using Catalyst) and get the 3 errors and 2 warning. :(

Screenshot 2022-10-25 at 13 08 27 Screenshot 2022-10-25 at 13 08 25 Screenshot 2022-10-25 at 13 08 22 Screenshot 2022-10-25 at 13 08 21 Screenshot 2022-10-25 at 13 08 19

I'm using the code from the example

` import SegmentedControl from 'rn-segmented-control';

import * as React from 'react'; import { StyleSheet, View } from 'react-native'; import SegmentedControl from './SegmentedControl';

export default function App() { const [tabIndex, setTabIndex] = React.useState(0);

return (

setTabIndex(index)} currentIndex={tabIndex} />

); }

const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', }, box: { marginHorizontal: 16, marginVertical: 16, }, }) `

whatdtech commented 2 years ago

first two warnings can be ignored due to ViewStyle props returning null maybe typescript old version dependency. Problem here is you are importing segmented control twice import SegmentedControl from 'rn-segmented-control'; import SegmentedControl from './SegmentedControl';

whatdtech commented 2 years ago

Try this example. import SegmentedControl from 'rn-segmented-control';

import * as React from 'react'; import { KeyboardAvoidingView, Platform, StyleSheet, Text, Input, Dimensions, StatusBar, ScrollView, NativeEventEmitter, TextInput,

TouchableHighlight, View, Alert, SafeAreaView } from 'react-native';

const W = Dimensions.get('window').width; const H = Dimensions.get('window').height;

export default function App() { const [tabIndex, setTabIndex] = React.useState(0);

return ( <KeyboardAvoidingView behavior={Platform.OS === 'ios' ? 'padding' : undefined} style={styles.container}

<>

<SegmentedControl //tabs={['Shop', 'Discover', 'Brands']} tabs={['ROUTER', 'AP', 'BLUETOOTH']} onChange={(index) => setTabIndex(index)} currentIndex={tabIndex} segmentedControlBackgroundColor='#3d1e25' activeSegmentBackgroundColor='gold' activeTextColor='black' textColor='silver' textStyle={{fontSize: 16,}} paddingVertical={10} /> </>

  </KeyboardAvoidingView>

); }

const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', height: H, width: W, }, box: { marginHorizontal: 16, marginVertical: 16, }, })

exotexot commented 2 years ago

Ah yes, my issue wasn't related to the double import you pointed out. I wasn't using it like I said I did. However, the errors were related to me using the

segments... You're not using the segments prop but the tabs prop. This differs from the original Readme.

whatdtech commented 2 years ago

ok, Thanks for testing. I will look into it