Skip to content

Instantly share code, notes, and snippets.

View NishantDesai1306's full-sized avatar

Nishant Desai NishantDesai1306

  • Vancouver, Canada
View GitHub Profile
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
@NishantDesai1306
NishantDesai1306 / default_app_bar.dart
Created June 29, 2019 08:54
Code for DefaultAppBar
class DefaultAppBar extends StatefulWidget implements PreferredSizeWidget {
@override
Size get preferredSize => Size.fromHeight(56.0);
@override
_DefaultAppBarState createState() => _DefaultAppBarState();
}
class _DefaultAppBarState extends State<DefaultAppBar> {
@override
@NishantDesai1306
NishantDesai1306 / tap_details.dart
Created June 29, 2019 09:05
Get the location where user tapped on the search button
double rippleStartX, rippleStartY;
void onSearchTapUp(TapUpDetails details) {
setState(() {
rippleStartX = details.globalPosition.dx;
rippleStartY = details.globalPosition.dy;
});
print("pointer location $rippleStartX, $rippleStartY");
}
@NishantDesai1306
NishantDesai1306 / MyPainter.dart
Created June 29, 2019 09:13
code for custom painter
class MyPainter extends CustomPainter {
final Offset center;
final double radius, containerHeight;
final BuildContext context;
Color color;
double statusBarHeight, screenWidth;
MyPainter({this.context, this.containerHeight, this.center, this.radius}) {
ThemeData theme = Theme.of(context);
@NishantDesai1306
NishantDesai1306 / default_app_bar.dart
Created June 29, 2019 09:34
portion of default_app_bar.dart
// add SingleTickerProviderStateMixin to our State widget
class _DefaultAppBarState extends State<DefaultAppBar> with SingleTickerProviderStateMixin {
}
// intialize animation and controller
AnimationController _controller;
Animation _animation;
@override
initState() {
@NishantDesai1306
NishantDesai1306 / default_app_bar.dart
Created June 29, 2019 09:47
registering animation listener to our animation controller
bool isInSearchMode = false;
// inside initState register our status listener
_controller.addStatusListener(animationStatusListener);
// add this method to our DefaultAppBar widget
animationStatusListener(AnimationStatus animationStatus) {
if (animationStatus == AnimationStatus.completed) {
setState(() {
isInSearchMode = true;
class SearchBar extends StatefulWidget implements PreferredSizeWidget {
@override
Size get preferredSize => Size.fromHeight(56.0);
@override
_SearchBarState createState() => _SearchBarState();
}
class _SearchBarState extends State<SearchBar> with SingleTickerProviderStateMixin {
String searchQuery = '';
@NishantDesai1306
NishantDesai1306 / default_app_bar.dart
Created June 29, 2019 10:06
adding callback functions so that default app bar can communicate with search bar
// add this method to default app bar class
// this will get executed when user pressed back arrow on search bar
cancelSearch() {
// remove search bar from stack
setState(() {
isInSearchMode = false;
});
// change search value to ''
onSearchQueryChange('');
@NishantDesai1306
NishantDesai1306 / search_bar.dart
Created June 29, 2019 10:12
wiring up the callback functions to widgets in search bar
// register that SearchBar will need these callbacks
SearchBar({
Key key,
@required this.onCancelSearch,
@required this.onSearchQueryChanged,
}) : super(key: key);
final VoidCallback onCancelSearch;
final Function(String) onSearchQueryChanged;