convertQuestionListToWidget function

dynamic convertQuestionListToWidget(
  1. dynamic questionsToConvert,
  2. dynamic _currentQuestionToRender,
  3. dynamic storeAnswers,
  4. dynamic _workBench,
  5. dynamic _themeData,
  6. dynamic customParams,
  7. dynamic _currentQuestionNumber,
  8. dynamic submitData,
  9. dynamic _lastQuestion,
  10. dynamic _scrollController,
  11. dynamic euiTheme,
  12. dynamic toggleNextButtonBlock,
)

Implementation

convertQuestionListToWidget(
    questionsToConvert,
    _currentQuestionToRender,
    storeAnswers,
    _workBench,
    _themeData,
    customParams,
    _currentQuestionNumber,
    submitData,
    _lastQuestion,
    _scrollController,
    euiTheme,
    toggleNextButtonBlock) {
  List<Widget> _newquestionList = List<Widget>.empty(growable: true);

  var i = 0;

  for (var question in questionsToConvert) {
    if (question['type'] == 'Rating') {
      _newquestionList.add(
        AnimatedOpacity(
          opacity: _currentQuestionToRender['id'] == null
              ? 1.0
              : _currentQuestionToRender['id'] == question['id']
                  ? 1.0
                  : 0.0,
          duration: const Duration(milliseconds: 200),
          child: Center(
            child: SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              child: ColumnRating(
                func: storeAnswers,
                answer: _workBench,
                question: question,
                theme: _themeData,
                customParams: customParams,
                currentQuestionNumber: i + 1,
                isLastQuestion: question['id'] == _lastQuestion['id'],
                lastQuestionId: _lastQuestion['id'],
                submitData: submitData,
                euiTheme: euiTheme,
              ),
            ),
          ),
        ),
      );
    }
    if (question['type'] == 'TextInput' || question['type'] == 'EmailInput') {
      _newquestionList.add(
        AnimatedOpacity(
          opacity: _currentQuestionToRender['id'] == null
              ? 1.0
              : _currentQuestionToRender['id'] == question['id']
                  ? 1.0
                  : 0.0,
          duration: const Duration(milliseconds: 200),
          child: Center(
            child: SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              child: TextRating(
                  func: storeAnswers,
                  answer: _workBench,
                  question: question,
                  theme: _themeData,
                  customParams: customParams,
                  currentQuestionNumber: i + 1,
                  isLastQuestion: question['id'] == _lastQuestion['id'],
                  submitData: submitData,
                  euiTheme: euiTheme,
                  toggleNextButtonBlock: toggleNextButtonBlock),
            ),
          ),
        ),
      );
    }
    if (question['type'] == 'MultiChoice') {
      _newquestionList.add(
        AnimatedOpacity(
          opacity: _currentQuestionToRender['id'] == null
              ? 1.0
              : _currentQuestionToRender['id'] == question['id']
                  ? 1.0
                  : 0.0,
          duration: const Duration(milliseconds: 200),
          child: Center(
            child: SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              controller: _scrollController,
              child: MultiChoice(
                func: storeAnswers,
                answer: _workBench,
                question: question,
                theme: _themeData,
                customParams: customParams,
                currentQuestionNumber: i + 1,
                submitData: submitData,
                isLastQuestion: question['id'] == _lastQuestion['id'],
                euiTheme: euiTheme,
                toggleNextButtonBlock: toggleNextButtonBlock,
              ),
            ),
          ),
        ),
      );
    }
    if (question['type'] == 'OpinionScale') {
      _newquestionList.add(
        AnimatedOpacity(
          opacity: _currentQuestionToRender['id'] == null
              ? 1.0
              : _currentQuestionToRender['id'] == question['id']
                  ? 1.0
                  : 0.0,
          duration: const Duration(milliseconds: 200),
          child: Center(
            child: SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              controller: _scrollController,
              child: ColumnOpnionScale(
                func: storeAnswers,
                answer: _workBench,
                question: question,
                theme: _themeData,
                customParams: customParams,
                currentQuestionNumber: i + 1,
                submitData: submitData,
                isLastQuestion: question['id'] == _lastQuestion['id'],
                euiTheme: euiTheme,
              ),
            ),
          ),
        ),
      );
    }
    if (question['type'] == 'NPSScore') {
      var isLastQuestionSubQuestion = _lastQuestion['subQuestion'] ?? false;
      var lastQuestionId = _lastQuestion['id'];
      if(isLastQuestionSubQuestion){
        lastQuestionId = _lastQuestion['parent_question_id'];
      }
      _newquestionList.add(
        AnimatedOpacity(
          opacity: _currentQuestionToRender['id'] == null
              ? 1.0
              : _currentQuestionToRender['id'] == question['id']
                  ? 1.0
                  : 0.0,
          duration: const Duration(milliseconds: 200),
          child: Center(
            child: SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              controller: _scrollController,
              child: NpsScore(
                func: storeAnswers,
                answer: _workBench,
                question: question,
                theme: _themeData,
                customParams: customParams,
                currentQuestionNumber: i + 1,
                submitData: submitData,
                isLastQuestion: question['id'] == lastQuestionId,
                euiTheme: euiTheme,
              ),
            ),
          ),
        ),
      );
    }
    if (question['type'] == 'CESScore') {
      var isLastQuestionSubQuestion = _lastQuestion['subQuestion'] ?? false;
      var lastQuestionId = _lastQuestion['id'];
      if(isLastQuestionSubQuestion){
        lastQuestionId = _lastQuestion['parent_question_id'];
      }
      _newquestionList.add(
        AnimatedOpacity(
          opacity: _currentQuestionToRender['id'] == null
              ? 1.0
              : _currentQuestionToRender['id'] == question['id']
                  ? 1.0
                  : 0.0,
          duration: const Duration(milliseconds: 200),
          child: Center(
            child: SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              controller: _scrollController,
              child: CesScore(
                func: storeAnswers,
                answer: _workBench,
                question: question,
                theme: _themeData,
                customParams: customParams,
                currentQuestionNumber: i + 1,
                submitData: submitData,
                isLastQuestion: question['id'] == lastQuestionId,
                euiTheme: euiTheme,
              ),
            ),
          ),
        ),
      );
    }
    if(question['type'] == 'CSATScore'){
var isLastQuestionSubQuestion = _lastQuestion['subQuestion'] ?? false;
      var lastQuestionId = _lastQuestion['id'];
      if(isLastQuestionSubQuestion){
        lastQuestionId = _lastQuestion['parent_question_id'];
      }
      _newquestionList.add(
        AnimatedOpacity(
          opacity: _currentQuestionToRender['id'] == null
              ? 1.0
              : _currentQuestionToRender['id'] == question['id']
                  ? 1.0
                  : 0.0,
          duration: const Duration(milliseconds: 200),
          child: Center(
            child: SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              controller: _scrollController,
              child: Csat(
                func: storeAnswers,
                answer: _workBench,
                question: question,
                theme: _themeData,
                customParams: customParams,
                currentQuestionNumber: i + 1,
                submitData: submitData,
                isLastQuestion: question['id'] == lastQuestionId,
                euiTheme: euiTheme,
              ),
            ),
          ),
        ),
      );
    }
    if (question['type'] == 'PhoneNumber') {
      _newquestionList.add(
        AnimatedOpacity(
          opacity: _currentQuestionToRender['id'] == null
              ? 1.0
              : _currentQuestionToRender['id'] == question['id']
                  ? 1.0
                  : 0.0,
          duration: const Duration(milliseconds: 200),
          child: Center(
            child: SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              child: ColumnPhone(
                func: storeAnswers,
                answer: _workBench,
                question: question,
                theme: _themeData,
                customParams: customParams,
                currentQuestionNumber: i + 1,
                isLastQuestion: question['id'] == _lastQuestion['id'],
                submitData: submitData,
                euiTheme: euiTheme,
              ),
            ),
          ),
        ),
      );
    }
    if (question['type'] == 'YesNo') {
      _newquestionList.add(
        AnimatedOpacity(
          opacity: _currentQuestionToRender['id'] == null
              ? 1.0
              : _currentQuestionToRender['id'] == question['id']
                  ? 1.0
                  : 0.0,
          duration: const Duration(milliseconds: 200),
          child: Center(
            child: SingleChildScrollView(
              physics: BouncingScrollPhysics(),
              child: YesOrNo(
                func: storeAnswers,
                answer: _workBench,
                question: question,
                theme: _themeData,
                customParams: customParams,
                currentQuestionNumber: i + 1,
                submitData: submitData,
                isLastQuestion: question['id'] == _lastQuestion['id'],
                euiTheme: euiTheme,
              ),
            ),
          ),
        ),
      );
    }
    i += 1;
  }
  return _newquestionList;
}