我应该如何实现init方法?在有状态或无状态小部件中?

Tom*_*ran 6 optimization performance dart flutter

使用小部件的初始方法的经验法则是什么?我应该使用:

  • A. 经典的有状态小部件方法?

在此输入图像描述

  • 还是坚持使用B.stateless widget 方法更好?

在此输入图像描述

根据我的测试,两者似乎都有效。在代码减少方面,似乎 B. 方法更好、更短、更干净、更具可读性。性能方面又如何呢?还有什么我可能会错过的吗?

Rom*_*uez 15

初始化控制器应该是一次性操作;如果您在StatelessWidget构建方法上执行此操作,则每次重建此小部件时都会触发它。如果您在StatefulWidgetinitState上执行此操作,则只会在初始化 State 时将该对象插入到树中时调用一次。


Swa*_*thi 7

我正在寻找基于无状态小部件中构造函数中传递的值来初始化一些值。因为我们都知道,对于 StatefulWidget,我们有 initState() 重写回调来初始化某些值等。但是对于 Stateless Widget,默认情况下没有给出任何选项。如果我们在 build 方法中执行此操作,则每次视图更新时都会调用它。所以我正在做下面的代码。有用。希望它能帮助某人。

import 'package:flutter/material.dart';

class Sample extends StatelessWidget {
  final int number1;
  final int number2;

  factory Sample(int passNumber1, int passNumber2, Key key) {
    int changeNumber2 = passNumber2 *
        2; //any modification you need can be done, or else pass it as it is.
    return Sample._(passNumber1, changeNumber2, key);
  }

  const Sample._(this.number1, this.number2, Key key) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Text((number1 + number2).toString());
  }
}
Run Code Online (Sandbox Code Playgroud)