import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:cake_wallet/palette.dart'; class Picker extends StatelessWidget { Picker({ @required this.selectedAtIndex, @required this.items, this.images, @required this.title, @required this.onItemSelected, this.mainAxisAlignment = MainAxisAlignment.start }); final int selectedAtIndex; final List items; final List images; final String title; final Function(Item) onItemSelected; final MainAxisAlignment mainAxisAlignment; @override Widget build(BuildContext context) { return GestureDetector( onTap: () => Navigator.of(context).pop(), child: Container( color: Colors.transparent, child: BackdropFilter( filter: ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0), child: Container( decoration: BoxDecoration(color: PaletteDark.darkNightBlue.withOpacity(0.75)), child: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ Container( padding: EdgeInsets.only(left: 24, right: 24), child: Text( title, textAlign: TextAlign.center, style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, decoration: TextDecoration.none, color: Colors.white ), ), ), Padding( padding: EdgeInsets.only(left: 24, right: 24, top: 24), child: GestureDetector( onTap: () => null, child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(14)), child: Container( height: 233, color: Theme.of(context).accentTextTheme.title.backgroundColor, child: ListView.separated( separatorBuilder: (context, index) => Divider( color: Theme.of(context).dividerColor, height: 1, ), itemCount: items == null ? 0 : items.length, itemBuilder: (context, index) { final item = items[index]; final image = images != null? images[index] : null; final isItemSelected = index == selectedAtIndex; final color = isItemSelected ? Theme.of(context).accentTextTheme.subtitle.decorationColor : Colors.transparent; final textColor = isItemSelected ? Colors.blue : Theme.of(context).primaryTextTheme.title.color; return GestureDetector( onTap: () { if (onItemSelected == null) { return; } Navigator.of(context).pop(); onItemSelected(item); }, child: Container( height: 77, padding: EdgeInsets.only(left: 24, right: 24), color: color, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: mainAxisAlignment, crossAxisAlignment: CrossAxisAlignment.center, children: [ image != null ? image : Offstage(), Padding( padding: EdgeInsets.only( left: image != null ? 12 : 0 ), child: Text( item.toString(), style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, color: textColor, decoration: TextDecoration.none, ), ), ) ], ), ), ); }, ) ), ), ), ) ], ), ) ), ), ), ); } }