更改变量不会更改颤振中的视图

时间:2021-05-21 20:00:59

标签: flutter dart

我有一组图像位置字符串。 我的类中有一个名为 displayImage 的 int,当我初始化该类的一个实例时,我将 displayImage 的值设置为 0。所以我看到了与数组中的第一个图像对应的图像。 然后我调用一个函数,该函数在超时后将 int 的值从 0 更改为 1,但我没有看到相应的第二个图像。图像不更新。数组的索引displayImage发生变化时,如何让图像发生变化?

var images = ["amusement1.jpeg", "amusement2.jpg", "amusement3.png", "amusement4.jpeg",
    "amusement5.jpeg", "amusement6.jpeg"];

class RandomWords extends StatefulWidget {
  @override
  _RandomWordsState createState() => _RandomWordsState(0);
}

class _RandomWordsState extends State<RandomWords> {
  final _suggestions = <WordPair>[];
  final _biggerFont = TextStyle(fontSize: 10.0);
  int displayImage;

  _RandomWordsState(firstImage) {
    this.displayImage = firstImage;
  }

  Widget _buildRow(WordPair pair) {
    return ListTile(
      title: Text(
        pair.asPascalCase,
        style: _biggerFont,
      )
    );
  }

  final timeout = Duration(seconds: 3);

  void handleTimeout() {
    print(this.displayImage);
    this.displayImage++;
    print(this.displayImage);
  }

  switchImages () {
    print("switching image");
    const timeout = Duration(seconds: 3);
    const ms = Duration(milliseconds: 1);

    Timer startTimeout(milliseconds) {
      var duration = milliseconds == null ? timeout : ms * milliseconds;
      return Timer(duration, handleTimeout);
    }

    startTimeout(1000);
  }

  Widget _buildSuggestions() {

    return ListView.builder(
      padding: EdgeInsets.all(16.0),
      itemBuilder: (context, i) {
        if (i.isOdd) return Divider();

        final index = i ~/ 2;
        if (index >= _suggestions.length) {
          _suggestions.addAll(generateWordPairs().take(10));
        }
        return _buildRow(_suggestions[index]);
      });
    }

  @override
  Widget build(BuildContext context) {

    switchImages();
    String imageUrl = "assets/amusement/" + images[displayImage];
    final wordPair = WordPair.random();
    return Image(image: AssetImage(imageUrl));
  }
}

0 个答案:

没有答案