#list #flutter #dart
#Список #flutter #dart
Вопрос:
У меня простой вопрос. У меня есть список из трех целых чисел. В моем приложении у меня есть плавающая кнопка действия. Каждый раз при нажатии кнопки отображается «следующий» элемент списка. Я должен выполнить сброс к первому элементу после завершения цикла. Я добился этого нелегким путем;
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
List nums = [1, 2, 3];
void _incrementCounter() {
if (_counter <= 1) {
setState(() {
_counter ;
});
} else {
setState(() {
_counter = 0;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('${nums[_counter]}'),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
child: Icon(Icons.add),
),
);
}
}
Я хотел бы знать, есть ли какие-то более простые способы добиться этого. Заранее спасибо за любую помощь.
Ответ №1:
Вы можете использовать остаток ( %
), чтобы вернуться к первому индексу после цикла:
void _incrementCounter() {
setState(() {
_counter = (_counter 1) % nums.length;
});
}