import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: Scaffold(body: Center(child: TestWidget())));
}
}
class MovableItem extends StatefulWidget {
final int removeIndex;
final double xInit;
final double yInit;
MovableItem({
@required this.removeIndex,
@required this.xInit,
@required this.yInit,
});
@override
State<StatefulWidget> createState() {
return _MovableItemState();
}
}
class _MovableItemState extends State<MovableItem> {
double xPosition = 0;
double yPosition = 0;
double _height = 150;
double _width = 150;
@override
void initState() {
super.initState();
xPosition = widget.xInit;
yPosition = widget.yInit;
print(widget.removeIndex);
}
@override
Widget build(BuildContext context) {
return Positioned(
top: yPosition,
left: xPosition,
child: GestureDetector(
onPanUpdate: (DragUpdateDetails tapInfo) {
setState(() {
xPosition += tapInfo.delta.dx;
yPosition += tapInfo.delta.dy;
});
},
child: Row(
children: <Widget>[
GestureDetector(
child: Container(height: _height, width: _width, child: Text(widget.removeIndex.toString()))
),
],
),
),
);
}
@override
void dispose() {
super.dispose();
print(widget.removeIndex);
}
}
class TestWidget extends StatefulWidget {
TestWidgetState createState() => TestWidgetState();
}
class TestWidgetState extends State<TestWidget> {
List<Widget> _stack = [];
@override
void initState() {
super.initState();
_stack.add(MovableItem(removeIndex: 0, xInit: 0, yInit: 0,));
_stack.add(MovableItem(removeIndex: 1, xInit: 20, yInit: 20,));
}
void onChangedFunction(int removeIndex) {
setState(() {
_stack.removeAt(removeIndex);
});
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Column(
children: <Widget>[
RaisedButton(
child: Text("remove 0 index"),
onPressed: () {
setState(() {
_stack.removeAt(0);
});
},),
SizedBox(
width: 500,
height: 500,
child: Stack(
children: _stack,
),
),
],
));
}
}
When onPressed in RaisedButton, I hope removed zero index to _stack. but actually first index is deleted.
when onPressed is called, I get the following printing result.
1
I expected to print zero. how can I remove zero index in _stack variable?
in another code, first index is removed on _stack variable in this code.
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: Scaffold(body: Center(child: TestWidget())));
}
}
class TestWidget extends StatefulWidget {
TestWidgetState createState() => TestWidgetState();
}
class TestWidgetState extends State<TestWidget> {
List<Widget> _stack = [];
@override
void initState() {
super.initState();
_stack.add(Positioned(
top: 0,
left: 0,
child: Text("0"),
));
_stack.add(Positioned(
top: 20,
left: 20,
child: Text("1"),
));
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Column(
children: <Widget>[
RaisedButton(
child: Text("remove 0 index"),
onPressed: () {
setState(() {
_stack.removeAt(0);
});
},),
SizedBox(
width: 500,
height: 500,
child: Stack(
children: _stack,
),
),
],
));
}
}