Как включить RaisedButton в контейнер

#flutter #widget #containers #add

#flutter #виджет #контейнеры #Добавить

Вопрос:

Я хочу Raisedbutton, который появляется после контейнера.

  @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Galeria clase 1'),
          ),
          body: Container(padding: EdgeInsets.all(8), child: galeria(array)),
          floatingActionButton: FloatingActionButton(
            onPressed: _optionsDialogBox,
            tooltip: 'Pick Image',
            child: Icon(Icons.add_outlined),
          ),
        );
      }enter code here
 

Я попробовал это, но есть следующая ошибка -> Окно визуализации не было выложено: RenderFlex#02bd4 relayoutBoundary=up1

   body: Column(children: <Widget>[
        (Container(
          padding: EdgeInsets.all(8),
          child: galeria(
            array,
          ),
        )),
        RaisedButton(
          child: Text("Guardar red"),
          onPressed: () {
            safeNeuralNetwork();
          },
        ),
      ]),
 

Комментарии:

1. Что galeria делать?

2. галерея функций

Ответ №1:

Функция галереи

 Widget galeria(List<Uint8List> array) {
    return StaggeredGridView.countBuilder(
      crossAxisCount: 2,
      itemCount: array.length,
      itemBuilder: (BuildContext context, int index) {
        return ClipRRect(
          borderRadius: BorderRadius.circular(10),
          child: Container(
            color: Colors.deepPurple,
            child: Column(
              children: <Widget>[Image.memory(array[index])],
            ),
          ),
        );
      },
      // staggeredTileBuilder: (int index) => new StaggeredTile.fit(1),
      staggeredTileBuilder: (int index) => new StaggeredTile.fit(1),
      mainAxisSpacing: 10.0,
      crossAxisSpacing: 10.0,
    );
  }
 

Ответ №2:

Виджет StaggeredGridView (или почти любой ScrollView) не может работать с неограниченной (бесконечной) высотой, как в вашем случае. У вас не может быть виджета столбца и ScrollView внутри него без использования Expanded или чего-то подобного. Почему? Потому что вам нужно что-то, чтобы ограничить максимальную высоту этого виджета. В этом случае мы будем использовать расширенный виджет. Так что идите и измените свой код следующим образом:

 body: Column(
  children: <Widget>[
    Expanded(
      child: Padding(
        child: galeria(array),
        padding: EdgeInsets.all(8.0),
      ),
    ),
    RaisedButton(
      onPressed: () {
        safeNeuralNetwork();
      },
      child: Text("Guardar red"),
    ),
  ],
),
 

При этом мы в основном сказали: «Эй, иди и отобрази этот столбец, но, пожалуйста, вставьте RaisedButton внизу и используйте оставшееся пространство для StaggeredGridView»..