FLUTTER прокручивает несколько виджетов

если у меня есть два (или более) прокручиваемых виджета (скажем, SingleChildScrollView), как заставить их ОБА прокручиваться одновременно?

потому что я буду Stackнакладывать их друг на друга, так что один покрыт другим Container.

я довольно новичок, так что у меня нет большого выбора прямо сейчас. я пробовал ScrollController но не работает. я понятия не имею, как правильно реализовать это в моих кодах.

также, пожалуйста, приложите простой пример кода, если это возможно.


Вот что я пробовал:

class _MyHomePageState extends State<MyHomePage> {

  final ScrollController _mycontroller = new ScrollController();


  @override
  Widget build(BuildContext context) {
    body:
      Container(
        height: 100,
        child:
          Stack( children: <Widget>[
            SingleChildScrollView(
              controller: _mycontroller,
              child: Column( children: <Widget>[
                Text('LEFT            '),
                Text('LEFT            '),
                Text('LEFT            '),
                Text('LEFT            '),
                Text('LEFT            '),
                Text('LEFT            '),
              ],)
            ),
            SingleChildScrollView(
              controller: _mycontroller,
              child: Column(children: <Widget>[
                Text('          RIGHT'),
                Text('          RIGHT'),
                Text('          RIGHT'),
                Text('          RIGHT'),
                Text('          RIGHT'),
                Text('          RIGHT'),
              ],)
            ),
          ])
      )
  }
}

я хочу, чтобы оба прокручивались вместе, если я прокручиваю любой из них. но они все равно прокручиваются независимо, даже если у них одинаковые controller. Я не уверен, правильно ли я использую controller.

пожалуйста, порекомендуйте.

опубликуйте свой код, чтобы люди могли вам помочь

Farhana Naaz Ansari 22.02.2019 06:34

@farhana привет, я добавил несколько кодов. это помогает?

Chris 25.02.2019 08:55

эй, почему вы берете stack, вы должны использовать виджеты Row, чтобы держать столбец влево или вправо с помощью scraolable

Farhana Naaz Ansari 25.02.2019 09:09

@farhana, но тогда я пролистаю ВСЕ Row. что, если прокручиваемые элементы находятся в другом Row или Column, как в одном из их children?

Chris 25.02.2019 09:34

как я понимаю, у вас есть два столбца слева и справа, и оба они прокручиваются.

Farhana Naaz Ansari 25.02.2019 09:53

@farhana я пытаюсь сделать что-то похожее на это. я просто упрощаю проблему до «одновременной прокрутки двух виджетов».

Chris 25.02.2019 10:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
6
3 383
2

Ответы 2

Try This code both the Column Scroll at same time use can use only one controller to scroll the Both Column.

  class _ConfirmEmailState extends State<ConfirmEmail> {

  final ScrollController _mycontroller = new ScrollController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("hello"),
        ),
        body: Container(
          height: 100,
          child: ListView(children: <Widget>[
            Stack(children: <Widget>[
              SingleChildScrollView(
                  controller: _mycontroller,
                  child: Column(
                    children: <Widget>[
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                      Text('LEFT            '),
                    ],
                  )),
              Column(
                children: <Widget>[
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                  Text('          RIGHT'),
                ],
              )
            ]),
          ]),
        ));
  }
}

Привет! Спасибо за ответ. Я не думаю, что это то, что я ищу. в вашем примере движется весь стек. я хотел, чтобы в виде отдельного списка они оба могли прокручиваться вместе, даже если они не были объединены. Таким образом, я могу размещать эти списки любым удобным для меня способом, но при этом прокручивать их вместе, потому что они будут обмениваться информацией.

Chris 22.02.2019 09:02

Во флаттере доступно 11 различных типов виджетов для достижения функциональности прокрутки с другой задачей. Чтобы создать простой вертикальный ScrollView, который может содержать различные типы виджетов с различным поведением, мы будем использовать виджет SingleChildScrollView. Этот виджет может отображать несколько виджетов внутри него.

  1. Виджет «Создать эшафот» -> виджет «Безопасная зона» в области создания виджета
class MyApp extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
  return MaterialApp(
    home: Scaffold(
        body: SafeArea(
          child: 
        )
       )
      );
   }
 }
  1. Создайте виджет SingleChildScrollView в виджете Безопасная зона. Теперь мы создадим виджет Column внутри SingleChildScrollView и поместим все наши несколько виджетов внутрь виджета Column. Мы создаем несколько контейнерных виджетов и виджетов изображений внутри SingleChildScrollView. Все будет легко прокручиваться здесь.
SingleChildScrollView(
  child: Column(
  children: <Widget>[

    Container(
      color: Colors.green, // Yellow
      height: 120.0,
    ),

    Image.network('https://flutter-examples.com/wp-content/uploads/2019/09/blossom.jpg',
       width: 300, height: 200, fit: BoxFit.contain),

    Image.network('https://flutter-examples.com/wp-content/uploads/2019/09/sample_img.png',
       width: 200, fit: BoxFit.contain),

    Container(
      color: Colors.pink, // Yellow
      height: 120.0,
    ),

    Text('Some Sample Text - 1', style: TextStyle(fontSize: 28)),

    Text('Some Sample Text - 2', style: TextStyle(fontSize: 28)),

    Text('Some Sample Text - 3', style: TextStyle(fontSize: 28)),

    Container(
      color: Colors.redAccent, // Yellow
      height: 120.0,
    ),

    Image.network('https://flutter-examples.com/wp-content/uploads/2019/09/blossom.jpg',
       width: 300, height: 200, fit: BoxFit.contain),

  ],
  ),
 ),

Другие вопросы по теме