Skip to content

Instantly share code, notes, and snippets.

@mxm5
Last active March 13, 2021 11:49
Show Gist options
  • Save mxm5/90819c434a1a513e256532ac55e4dc3e to your computer and use it in GitHub Desktop.
Save mxm5/90819c434a1a513e256532ac55e4dc3e to your computer and use it in GitHub Desktop.
some random code
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter/services.dart';
import 'package:rive/rive.dart';
import 'package:flutter_neumorphic/flutter_neumorphic.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:smarthome_flutter/cubits/cubit_class.dart';
import 'package:smarthome_flutter/cubits/states.dart';
import 'package:smarthome_flutter/cubits/state_event_click.dart';
import 'package:smarthome_flutter/cubits/cubit_click.dart';
class Roshanaiee extends StatefulWidget {
@override
_RoshanaieeState createState() => _RoshanaieeState();
}
class _RoshanaieeState extends State<Roshanaiee> {
double slidervalue = 0;
Artboard _riveArtboard;
RiveAnimationController _controller;
int selectedIndex;
String id_selected;
void initState() {
super.initState();
context.read<Cubit_class>().getline();
context.read<Cubit_click>().init();
rootBundle.load('assets/lumpanim.riv').then(
(data) async {
final file = RiveFile();
if (file.import(data)) {
final artboard = file.mainArtboard;
artboard.addController(_controller = SimpleAnimation('0.0'));
setState(() {
_riveArtboard = artboard;
});
}
},
);
}
final snackBar = SnackBar(
content: Text(
'!لطفا مکان را انتخاب کنید',
textAlign: TextAlign.right,
));
@override
Widget build(BuildContext context) {
final appbar = AppBar(
title: Text(
'روشنایی',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
centerTitle: true,
leading: new IconButton(
icon: new Icon(Icons.arrow_back, color: Colors.grey),
onPressed: () => Navigator.of(context).pop(),
),
backgroundColor: Color(0xff222831),
);
double screen_width = MediaQuery.of(context).size.width;
double screen_height = MediaQuery.of(context).size.height -
appbar.preferredSize.height -
MediaQuery.of(context).padding.top;
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
backgroundColor: Color(0xff222831),
appBar: appbar,
body:
BlocConsumer<Cubit_click, State_Event_click>(
buildWhen: (previous, current) {
return true;
},
listenWhen: (previous, current) {
if (current is Slider_value && previous is Slider_value) {
if (current.value == previous.value) {
return false;
} else {
return true;
}
} else {
return false;
}
},
listener: (context, state) {
if (state is Slider_value) {
slidervalue = state.value;
}
},
builder: (context, state) {
return Container(
width: screen_width,
height: screen_height,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
// mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
height: screen_height * 0.05,
),
Container(
width: screen_width * 0.85,
height: screen_height * 0.75,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Color(0xff393E46),
),
child: Column(
children: [
SizedBox(
height: screen_height * 0.01,
),
Align(
alignment: Alignment.topLeft,
child: Icon(
Icons.more_vert,
color: Colors.grey,
size: screen_width * 0.07,
),
),
SizedBox(
height: screen_height * 0.01,
),
Row(
children: [
Expanded(
flex: 1,
child: Container(
// height: 100,
// color: Colors.red,
)),
Expanded(
flex: 3,
child: Container(
height: screen_height * 0.5,
// color: Colors.blue,
child: Stack(
children: [
Center(
child: _riveArtboard == null
? const SizedBox()
: Rive(
artboard: _riveArtboard,
fit: BoxFit.cover,
),
),
Align(
alignment:
Alignment.topCenter,
child: Container(
// color: Colors.red,
height:
screen_height * 0.2,
width: screen_width * 0.4,
child: Column(
children: [
SizedBox(
height:
screen_height *
0.1,
),
Row(
mainAxisAlignment:
MainAxisAlignment
.center,
crossAxisAlignment:
CrossAxisAlignment
.center,
children: [
Text(
slidervalue
.toStringAsFixed(
0),
style: TextStyle(
fontSize:
screen_width *
0.08,
fontFamily:
'DigitalNumbers',
color: Colors
.white70),
),
Text(
'%',
style: TextStyle(
fontSize:
screen_width *
0.05,
color: Colors
.white70),
),
],
),
],
)))
],
))),
Expanded(
flex: 1,
child: Column(
children: [
Container(
height: screen_height * 0.35,
child: RotatedBox(
quarterTurns: -1,
child: Slider(
value: slidervalue,
divisions: 10,
min: 0,
max: 100,
inactiveColor:
Colors.white70,
activeColor:
Colors.grey[600],
label: '${slidervalue}%',
onChanged: (event) {
// slidervalue = event;
context
.read<Cubit_click>()
.changeslider(event,
id_selected);
// print(state.value.toString());
rootBundle
.load(
'assets/lumpanim.riv')
.then(
(data) async {
final file =
RiveFile();
if (file
.import(data)) {
final artboard = file
.mainArtboard;
artboard.addController(
_controller =
SimpleAnimation(
slidervalue
.toString()));
_riveArtboard =
artboard;
}
},
);
// Cubit_click().changeslider(event, id_selected);
}))),
SizedBox(
height: screen_height * 0.05,
)
],
)),
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
SizedBox(
width: screen_width * 0.02,
),
Neumorphic(
style: NeumorphicStyle(
shape: NeumorphicShape.flat,
boxShape: NeumorphicBoxShape.roundRect(
BorderRadius.circular(8)),
depth: 8,
// lightSource: LightSource.top,
border: NeumorphicBorder(
width: 1,
),
shadowDarkColor: Colors.black,
shadowLightColor: Colors.white,
color: Colors.black),
child: Container(
width: screen_width * 0.125,
height: screen_height * 0.12,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5),
color: Color(0xff222831),
),
child: InkWell(
child: Icon(
Icons.access_time,
size: screen_width * 0.11,
color: Colors.white70,
),
onTap: () {
id_selected == null
? ScaffoldMessenger.of(context)
.showSnackBar(snackBar)
: context
.read<Cubit_click>()
.event_click(
'time', id_selected);
},
),
),
),
InkWell(
child: Stack(
children: [
Neumorphic(
style: NeumorphicStyle(
shape: NeumorphicShape.flat,
boxShape:
NeumorphicBoxShape.roundRect(
BorderRadius.circular(8)),
depth: 12,
// lightSource: LightSource.top,
border: NeumorphicBorder(
width: 1,
),
shadowDarkColor: Colors.black,
shadowLightColor: slidervalue == 0
? Colors.white
: Colors.grey[700],
color: Colors.black),
child: Container(
width: screen_width * 0.125,
height: screen_height * 0.12,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(5),
color: Color(0xff222831),
),
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
SvgPicture.asset(
"assets/images/power2_dark.svg",
width: screen_width * 0.07,
color: Colors.white70),
SizedBox(
height: screen_height * 0.01,
),
Text('خاموش',
style: TextStyle(
color: Colors.white70,
fontWeight:
FontWeight.bold),
textAlign: TextAlign.center)
],
),
),
),
],
),
onTap: () {
id_selected == null
? ScaffoldMessenger.of(context)
.showSnackBar(snackBar)
: context
.read<Cubit_click>()
.event_click('off', id_selected);
},
),
InkWell(
child: Stack(
alignment: Alignment.center,
children: [
// Neumorphic(
// style: NeumorphicStyle(
// shape: NeumorphicShape.flat,
// boxShape: NeumorphicBoxShape.roundRect(
// BorderRadius.circular(10)),
// depth: -12,
// // lightSource: LightSource.top,
//
// border: NeumorphicBorder(
// width: 1,
// ),
// shadowDarkColor: Colors.black,
// shadowLightColor: slidervalue == 0
// ? Colors.grey[600]
// : Colors.white,
// color: Colors.grey[700]),
//
// child: Container(
// width: screen_width * 0.16,
// height: screen_height * 0.14,
// ),
// ),
Neumorphic(
style: NeumorphicStyle(
shape: NeumorphicShape.flat,
boxShape:
NeumorphicBoxShape.roundRect(
BorderRadius.circular(8)),
depth: 12,
// lightSource: LightSource.top,
border: NeumorphicBorder(
width: 1,
),
shadowDarkColor: Colors.black,
shadowLightColor: slidervalue == 0
? Colors.grey[700]
: Colors.white,
color: Colors.black),
child: Container(
width: screen_width * 0.125,
height: screen_height * 0.12,
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(5),
color: Color(0xff222831),
),
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
SvgPicture.asset(
"assets/images/power2_dark.svg",
width: screen_width * 0.07,
color: Colors.white70),
SizedBox(
height: screen_height * 0.01,
),
Text(
'روشن',
style: TextStyle(
color: Colors.white70,
fontWeight:
FontWeight.bold),
textAlign: TextAlign.center,
)
],
),
),
),
],
),
onTap: () {
id_selected == null
? ScaffoldMessenger.of(context)
.showSnackBar(snackBar)
: context
.read<Cubit_click>()
.event_click('on+${slidervalue}',
id_selected);
},
),
SizedBox(
width: screen_width * 0.02,
),
],
)
],
)),
SizedBox(
height: screen_height * 0.03,
),
Expanded(child: BlocBuilder<Cubit_class, List<States>>(
builder: (context, state) {
return Container(
width: screen_width * 0.85,
height: screen_height * 0.07,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Color(0xff393E46),
),
child: ListView.builder(
shrinkWrap: true,
itemCount: state.length,
scrollDirection: Axis.horizontal,
itemBuilder: (context, index) {
return Container(
width: screen_width * 0.25,
height: screen_height * 0.07,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5),
color: selectedIndex == index
? Colors.grey[600]
: Colors.transparent,
),
child: Center(
child: ListTile(
onTap: () {
// setState(() {
// selectedIndex = index;
// id_selected = state[index].id;
// });
},
title: Text(
state[index].name,
style: TextStyle(
color: selectedIndex == index
? Colors.white
: Colors.grey,
),
textAlign: TextAlign.center,
),
),
));
},
),
);
})),
SizedBox(
height: screen_height * 0.03,
),
],
));
})));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment