requestWidgetUpdate
react-native-android-widget exports a requestWidgetUpdate function that can be used to request a widget update while the application is open (or with some background task).
Since the user can add the same widget multiple times, with different sizes, requestWidgetUpdate will cycle all widgets and allow us to redraw them.
Usage
Lets assume we have a CounterWidget widget that shows a single number, which it gets as a prop.
If the user has added a CounterWidget to the home screen, then when the CounterWidgetScreen is opened we can update the number shown on the widget on the home screen using requestWidgetUpdate.
If the user has added the CounterWidget multiple times, renderWidget will be called multiple times, once for each widget.
If the user has not added the CounterWidget on the Android home screen, the optional callback widgetNotFound will be called.
Example
import * as React from 'react';
import { Button, StyleSheet, View, Text } from 'react-native';
import { requestWidgetUpdate } from 'react-native-android-widget';
import { CounterWidget } from './CounterWidget';
export function CounterScreen() {
const [count, setCount] = React.useState(0);
React.useEffect(() => {
requestWidgetUpdate({
widgetName: 'Counter',
renderWidget: () => <CounterWidget count={count} />,
widgetNotFound: () => {
// Called if no widget is present on the home screen
}
});
}, [count]);
return (
<View style={styles.container}>
<Text>{count}</Text>
<Button title="Increment" onPress={() => setCount(count + 1)} />
<Button title="Decrement" onPress={() => setCount(count - 1)} />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
});
Demo
Check the full code in the Counter Screen
Types
Check the types in the Public API documentation
The requestWidgetUpdate function should be called with the properties described with RequestWidgetUpdateProps