То, что вы запрашиваете, - это, по сути, возможность запускать произвольный код (в форме строковых функций) во время выполнения. Это технически возможно сделать, но это окольным путем, и это продемонстрировано в статье на iiro.dev:
final code = 'void main() { print("Hello World"); }';
final uri = Uri.dataFromString(code, mimeType: 'application/dart');
await Isolate.spawnUri(uri, [], null);
(Полный текст статьи можно найти здесь .)
Однако есть несколько предостережений. Во-первых, он работает только тогда, когда ваша программа работает в режиме JIT, поэтому, если вы скомпилируете свою программу Dart в автономную программу, скомпилированную AOT, она просто не будет работать. (В Flutter это означает, что оно работает только тогда, когда приложение работает в режиме отладки, а не в режиме выпуска.)
Во-вторых, выполнение этого кода подпадает под тот же самый зонтик, что и использование eval
в Javascript, в что он не только подвержен ошибкам, но и представляет собой огромный риск для безопасности. Если вы поместите этот код в приложение и опубликуете sh приложение, вы, по сути, устанавливаете бэкдор в телефонах людей, который позволяет кому-то запускать любой код, который он хочет. Нет никакого реального способа ограничить или изолировать эту функцию, так что это всегда будет проблемой безопасности до такой степени, что в вашем приложении всегда будет возможность стать вредоносным ПО для троянских коней.
Так что в основном ответ на ваш вопрос так же, как если бы кто-то спрашивал, как использовать eval
. И ответ всегда один и тот же: ВЫ НЕ .